并不是从前向后的,而是有顺序的:
而且每个步骤的输出结果都做为下一个步骤的输入。
(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列表中别名的步骤。