一、DML

单表查询
语句结构
SELECT … FROM … WHERE … GROUP BY … HAVING … ORDER BY … ;
执行顺序
FROM — WHERE — GROUP BY — HAVING — SELECT — ORDER BY ;

SELECT 列名 FROM 表名 ;
SELECT 列名 AS 别名 FROM 表名 AS 别名 ;

拼接
SELECT CONCAT(列名1, 列名2, …) FROM 表名 ;
SELECT CONCAT_WS( ‘拼接符’, 列名1, 列名2, …) FROM 表名 ;

去重
SELECT DISTINCT 列名 FROM 表名 ;

排序
SELECT 列名 FROM 表名 … ORDER BY 列名1, 列名2, ASC / DESC ;

数据过滤
SELECT 列名 FROM 表名 WHERE 条件… (ORDER BY …) ;
where条件可包括:

  • 判空赋值:IFNULL(列名,数)
  • 模糊查询,通配符:like
  • 表示单个字符 :_
  • 任意数量字符 :%
  • 范围:between 值 and 值,in
  • 异常值处理:is null / is not null
  • 多条件过滤:and or
  • 对比:> = < !=

聚合函数

  • 计数:COUNT(*),COUNT(col) 只非null,COUNT(distinct col) 去重
  • 求和:SUM(col)
  • 均值:AVG(col)
  • 最大/最小:MAX(col),MIN(col)

分组函数
SELECT 聚合键,聚合函数 FROM … WHERE … GROUP BY 分组子句 (ORDER BY …) ;
与聚合函数同时出现,先过滤,再分组,最后可聚合

分组过滤
SELECT … FROM … WHERE … GROUP BY 分组子句 HAVING …
(ORDER BY …) ;
分组,聚合,对聚合结果过滤筛选,HAVING 指定组条件

数据类型
数值型
INTEGER DECIMAL(定点型) FLOAT
函数:ABS()_绝对值函数、ROUND()_四舍五入函数

文本型
CHAR VARCHAR
函数:LENGTH()_字符长度、CHAR_LENGTH()_字节长度、RTRIM()_右边去空、LTRIM()_左边去空、UPPER()_变大写、LOWER()_变小写

日期型
DATE TIME DETETIME
函数:YEAR()、HOUR()、MONTH()、MONTHNAME()、NOW()、CURDATE()、CURTIME()、DATE_ADD()、DATE_SUB()

多表查询
子查询
标量子查询:返回常数
关联子查询:返回一列数据,where a.id = c.id
普通子查询:返回一整列 in 以子查询结果取值范围,子查询结果为主查询的表

联结——列
SELECT 列名 FROM 表1 , 表2 WHERE 表1.列a = 表2.列b ;

内部联结:
SELECT 列名 FROM a INNER JOIN b ON a.id = .cid ;

外表联结:
LEFT OUTER JOIN , RIGHT OUTER JOIN , FULL OUTER JOIN

组合——行
UNION(对查询结果拼接,去重) UNION ALL(不去重)
select 。。。 union select。。。

增删改
增加
INSERT INTO 表 VALUES( , , ) ;
INSERT INTO 表( , , ) VALUES( , , ) ;
INSERT INTO 表 SELECT 列 FROM 表 ;

更新
UPDATE 表 SET 字段 = 常数、NULL WHERE 过滤条件 ;

删除
DELETE FROM 表 WHERE … ;

清空表
TRUNCATE TABLE 表 ;

二、DDL

创建
CREATE TABLE 表名
(
字段 数据类型 属性,
) ;
属性包括:
NOT NULL
PRIMARY KEY
FOREIGN KEY
复制表:
CREATE TABLE 表名 AS SELECT 列 FROM 表 ;
RENAME 表 TO 新表名 ;
修改
ALTER TABLE 表名
ADD 字段 数据类型 属性 ;
DROP 字段,DROP 字段 ;
DROP COLUMN 字段 ;
MODIFY COLUMN 字段 数据类型 属性 ;

删除
DROP TABLE 表名 ;

视图
CREATE VIEW 视图名 AS SELECT 列 FROM 表 ;
DROP VIEW 视图名 ;

存储过程
PROCEDURE 存储名
BEGIN 语句,… ; END
调用:
CALL PROCEDURE 存储名

三、DCL

事务管理
提交:COMMIT
回滚:ROLLBACK
保留点:SAVEPOINT
释放:RELEASE SAVEPOINT 保留点名 ;
设置自动提交机制:SET AUTOCOMMIT=1

四、函数

1、REPLACE(f,s1,s2)返回字符串f,其中所有出现的s1都替换为s2。
REPLACE(‘vessel’,‘e’,‘a’) -> ‘vassal’

2、ROUND(f,p)返回f,四舍五入到小数点后p位。
ROUND(7253.86, 1) -> 7253.9

3、CASE允许您在不同条件下返回不同的值。如果没有条件匹配(并且没有ELSE),则返回NULL。
CASE WHEN 条件1 THEN value1
WHEN 条件2 THEN value2
ELSE def_value
END

4、COALESCE接受任意数量的参数,并返回第一个不为空的值。
COALESCE(x,y,z) = z if x and y are NULL but z is not NULL

(待补充~~)