并不是从前向后的,而是有顺序的:
而且每个步骤的输出结果都做为下一个步骤的输入。
(1)from
读取数据库生成笛卡尔积,生成虚拟表,选择相对小的表做基础表。
(2) on
接下来便是应用on筛选器,on 中的逻辑表达式将应用到 虚拟表 中的各个行,筛选出满足on逻辑表达式的行,生成虚拟表2
(3) join
左右联结,将添加外部行。
(4) where
用where后的条件筛选,结果作为下一步的输入。
(5)group by(开始使用select中的别名,后面的语句中都可以使用)
子句将中的唯一的值组合成为一组,得到新的虚拟表
(6) avg,sum…
(7)having
having筛选器是第一个也是为唯一一个应用到已分组数据的筛选器
(8) select
出现的列筛选出来。
(9) distinct
移除相同的行
(10) order by
最后,在这一步中是第一个也是唯一一个可以使用select列表中别名的步骤。
本文详细解析了SQL查询的执行过程,从from子句生成笛卡尔积开始,经过on筛选器、join操作、where筛选、group by分组、聚合函数应用、having筛选、select列选择、distinct去重和orderby排序等步骤,清晰地展示了每一步骤的作用和数据流转。

被折叠的 条评论
为什么被折叠?



