1. 选择数据库
USE crashcourse
2. 查看所有数据库
SHOW databases;
3. 查看表结构
SHOW COLUMNS FROM customers
SHOW CREATE DATABASE 和 SHOW CREATE TABLE 分别用来显示创建特定数据库或表的SQL语句
SHOW GRANTS 显示授权用户的安全权限
检索语句
WHERE
WHERE 默认不区分大小写
BETWEEN 5 AND 10 检索某个范围的值
IS NULL/IS NOT NULL
IN ()
NOT 否定WHERE字句的条件
LIKE
% 任意字符出现任意次数
_ 任意单个字符
LIKE 与 REGEXP 的区别: LIKE在不使用统配符的情况下,会匹配整个列和=没什么区别,而REGEXP默认会在列值内匹配
GROUP BY 和 HAVING
GROUP BY 的一些重要规定
1. GROUP BY 可以包含任意数目的列,这使得能对分组进行嵌套,为数据分组提供更精细的控制
2. 如果在GROUP BY子句中嵌套的分组,数据将在最后规定的分组上进行分组
3. GROUP BY子句中列出的每个列都必须是检索列或有效的表达式(但不能是聚集函数),如果在SELECT中是用表达式,则必须在GROUP BY子句中使用相同的表达式,不能使用别名
4. 除聚集计算语句外,SELECT 语句中的每个列都必须在GROUP BY子句中给出
5. 如果分组中有NULL值,则NULL将作为一个分组返回
6. GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前
过滤分组
HAVING 专门用于过滤分组,且拥有和WHERE子句相同的特性,唯一的区别是 WHERE过滤行,HAVING过滤分组
ORDER BY
默认为ASC
LIMIT
字段拼接
Concat() e.g. Concat(vend_name, '(', vend_country, ')')
Trim() 去掉串左右两边的空格 RTrim() LTrim()
AS (alias) 别名
UNION
两种基本情况 1.在单个查询中从不同的表返回类似结构的数据 2.对单个表执行多个查询,按单个查询返回数据
全文本搜索
目前最常使用的引擎 MyISAM 和 InnoDB 前者支持全文本搜索,而后者不支持
为了进行全文本搜索,必须索引被索引的列,而且要随着数据的改变不断的跟新索引
在索引之后,使用SELECT 与 Match() 和 Against()执行检索
e.g. FULLTEXT(note_text) 对单个列建立索引
e.g. SELECT note_text FROM productnotes WHERE Match(note_text) Against('rabbit'); Match指定被搜索的列,Against()指定使用的搜索表达式
除非使用BINARY方式,否则全文本搜索不区分大小写
全文本搜索有等级值的概念
BOOLEAN MODE
插入数据 更新和删除数据
INSERT
e.g. INSERT INTO customer(cust_name, cust_email) VALUES('test', 'sss@gmail.com')
UPDATE
不要省略WHERE子句,否则会更新表中的所有行
e.g. UPDATE customers SET cust_email = 'elmer@fudd.com' WHERE cust_id = 10005;
DELETE
不要省略WHERE子句,否则会删除表中的所有行
DELETE FROM customers WHERE cust_id = 10006;
如果想删除表中所有行,可以使用TRUNCATE TABLE语句,他速度比DELETE更快,因为TRUNCATE实际是删除原来的表并重新创建一个表,而不是逐行删除表中的数据
DROP 删除整个表而不是其内容
DROP TABLE customers2;
SQL基本语句数据库基本操作1. 选择数据库 USE crashcourse2. 查看所有数据库 SHOW databases;3. 查看表结构 SHOW COLUMNS FROM customers SHOW CREATE DATABASE 和 SHOW CREATE TABLE 分别用来显示创建特定数据库或表的SQL语句 SHOW GRANTS ...