一.聚合函数类型
AVG() SUM() MAX() MIN() COUNT()
二.执行过程
SELECT [DISTINCT]...,....,...
FROM ... JOIN ...
ON 多表的连接条件
JOIN ...
ON ...
WHERE 不包含组函数的过滤条件
AND/OR 不包含组函数的过滤条件
GROUP BY ...,...[ WITH ROLLUP;]
HAVING 包含组函数的过滤条件
ORDER BY ... ASC/DESC
LIMIT ...,...
(1)from:从哪些表中筛选
(2)on:关联多表查询时,去除笛卡尔积
(3)where:从表中筛选的条件
(4)group by:分组依据
-- 4.1 WITH ROLLUP;在所有查询出的分组记录之后增加一条记录,该记录计算查询出的所有记录的总和,即统计记录数量。
(5)having:在统计结果中再次筛选
(6)order by:排序
(7)limit:分页
(7) DISTINCT:去除重复
注意事项
1.WHERE一定放在FROM后面
2.当使用ROLLUP时,不能同时使用ORDER BY子句进行结果排序,即ROLLUP和ORDER BY是互相排斥 的。
- HAVING 使用条件. 使用了聚合函数。不能单独使用,必须要跟 GROUP BY 一起使用。
整个selected 执行顺序 底层运行的原理,就是执行顺序
FROM -> WHERE -> GROUP BY -> HAVING -> SELECT 的字段 -> DISTINCT -> ORDER BY -> LIMIT
多表联查 2张表 FROM会增加这些步骤 多张重复这个步骤
FROM 先通过 CROSS JOIN 求笛卡尔积,相当于得到虚拟表 vt
ON 进行筛选,在虚拟表 vt1-1 的基础上进行筛选,得到虚拟表 vt1-2
如果我们使用的是左连接、右链接或者全连接,就会涉及到外部行,也就是在虚拟表 vt1-2 的基础上增加外部行,得到虚拟表 vt1-3。
网友评论