1. 查询
SELECT 输出的列
FROM 查询的表单名称
WHERE 查询条件
1.1 SELECT
1.1.1 查询结果显示全部的列
SELECT *
1.1.2 查询指定的列
SELECT 列名1,列名2,··· (列名之间用逗号分隔)
1.1.3 输出的列换名字
SELECT 列名 AS 新名字
1.1.4 输出的结果去掉重复值
SELECT DISTINCT 列名
1.1.5 满足条件的输出结果指定值
SELECT 'AAA' AS ‘number’ (新列名,名字是number,这一列的值为AAA)
举例:查询在2020年上半年的订单,并新增一列,列名是阶段,标记为2020年上半年;
SELECT '2020年上半年' AS '阶段'
WHERE order_time BETWEEN '2020-01-01' AND '2020-06-30'
1.2 WHERE
1.2.1 筛选符号
> < = >= <= != <>
1.2.2 关系筛选
AND OR NOT
AND的优先级高于OR,遇到需要先判断OR的情况,要加()
1.2.3 日期筛选
日期格式:‘YYYY-MM-DD’ 用筛选符号筛选
1.2.4 BETWEEN .. AND ..
同时条件需满足大于A小于B时,可以用 between A and B
1.2.5 LIKE 用于判断字符串是否含有某个字符串
WHERE XX LIKE ‘b%’ 表示XX中以b开头的字符,后面可以有0及其以上字符,%代表任意数量的字符,可为0
WHERE XX LIKE ‘_b’ 表示XX中以b结束的字符串,前面还有一个字符,_代表一个数量的字符,可为0
NOT LIKE 用于判断字符串是否不含有某个字符串
1.2.6 REGEXP
作用和LIKE一致,但更简洁
WHERE XX REGEXP ‘field’ 表示XX中含有field的字符,field前后可以有0及其以上字符
REGEXP ‘^field’ 表示以field开头
REGEXP ‘field$’ 表示以field结尾
REGEXP ‘field | mac | rose’ 表示含有这三个中的一个即可
REGEXP ‘[gim]e’ 表示含有 ge、im 或者me即可
REGEXP ‘[a-e]h’ 表示含有 ah/bh/ch/dh/eh即可
1.2.7 IS NULL
判断某个值是否为空值
IS NOT NUL 判断某个值是否不是空值
1.3 ORDER BY
ORDER BY xx 以xx字段升序排列,可以加不止一个字段,按照字段顺序排序
ORDER BY xx DESC 以xx字段降序排列
若有两个字段,可以一个升序排列,一个降序排列:
ORDER BY xx, yy DESC
1.4 LIMIT 决定返回的个数和行数
LIMIT 3 表示结果返回前三个记录
LIMIT 6,3 标识从第7个开始,返回三条记录
1.5 表和表的连接
1.5.1 INNER JOIN
SELECT *
FROM 表单1
JOIN 表单2 ON 表单1.字段 = 表单2.字段
1.5.2 一个表的自连接
SELECT *
FROM 表单1 a
JOIN 表单2 b ON a.字段1 = b.字段2
1.5.3 连接多个表
SELECT *
FROM 表单1
JOIN 表单2 ON 表单1.字段 = 表单2.字段
JOIN 表单3 ON 表单1.字段 = 表单3.字段
1.5.4 复合主键(需要两列才能唯一确定一个记录)
SELECT *
FROM 表单1
JOIN 表单2 ON 表单1.字段 = 表单2.字段 AND 表单1.字段2 = 表单2.字段2
1.5.5 OUTER JOIN
外部连接的用处,例如表单1的客户名id是007,但是表单2里没有007,inner join的结果是没有007这个客户了。但是外部连接的结果保留表单1的007客户,后面的连接值为NULL
SELECT *
FROM 表单1
LEFT JOIN 表单2 ON 表单1.字段 = 表单2.字段 (表单1的记录全部在,不满足条件时为NULL)
RIGHT JOIN 表单2 ON 表单1.字段 = 表单2.字段 (表单2的记录全部在,不满足条件时为NULL)
1.5.6 USING
当表单1和表单2的列名一样时,可直接用using
SELECT *
FROM 表单1
USING 字段
1.5.7 CROSS JOIN
交叉连接,例如表单1有m条记录,表单2有n条记录,则连接后有m*n条数据
SELECT *
FROM 表单1
CROSS JOIN 表单2
1.6 UNION
将两次的查询结果合并,以行的形式合并,列数必须一致
查询1
UNION
查询2
2. 增加
2.1 插入一行
INSERT INTO 表单名
VALUES (每一列对应的值,有default值时,可以不输入具体值,输入default)
当只有某几个列需要新增数值,其他列保持空值时,可以用:
INSERT INTO 表单名(列名,用逗号分隔)
VALUES (每一列对应的值)
2.2 插入多行
INSERT INTO 表单名
VALUES (行1),(行2),(行3)...
2.3 复制表格
CREATE TABLE 新表单名 AS
SELECT * FROM 需要复制的表单名
或者将查询结果创建为新的表格:
CREATE TABLE 新表单名 AS
SELECT xx FROM xx WHERE xx (查询语句)
3. 改
3.1 更新一行
UPDATE 表单名
SET 列名1 = 赋值1(可以是公式),列名2 = 赋值2,...
WHERE 需要更改的条件(eg:customer_id = 1)(where后面可以是查询语句 eg:customer_id = (select client_id from .. where ..),当查询出来的结果不止一个时, customer_id 后面的等于号,换成 IN)
4. 删除
4.1 按条件删除行
DELETE FROM 表单1
WHERE (可以加查询语句,eg xx = (select xx from xx where xx))