SQL Select 语句完整的执行顺序:
1、from 获取不同数据库表的数据;
2、where 子句跟随筛选条件,对数据进行过滤;
3、group by 子句可以将数据根据分组字段进行分组处理;
4、可使用聚集函数对数据进行汇总计算;
5、可使用 having 子句筛选分组结果;
6、select 后面可设置返回的数据字段;
7、使用 order by 对结果集进行排序。
SQL 语言不同于其他编程语言的最明显特征是处理代码的顺序。这是一种结构话查询语言,在大多数据库语言中,代码按编码顺序被处理。但在 SQL 语句中,第一个被处理的子句式 FROM,而不是第一出现的 SELECT。SQL 查询处理的步骤序号:
1.FROM 左表表名
2.<join_type> JOIN 右表表名
3.ON <join_condition>
4.WHERE <where_condition>
5.GROUP BY <group_by_list>
6. WITH {CUBE | ROLLUP}
7.HAVING <having_condition>
8. SELECT
9.去重DISTINCT
10.排序 ORDER BY <order_by_list>
11. <TOP_specification> <select_list>
以上每个步骤都会产生一个虚拟表,而该虚拟表又被用作下一个步骤的输入。这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只有最后一步生成的表才会会给调用者。如果没有在查询中指定某一个子句,
将跳过相应的步骤。
逻辑查询处理阶段简介:
1、 FROM:对 FROM 子句中的前两个表执行查询获得笛卡尔积(交叉联接),生成虚拟表 t1。
2、 ON:对 t1 应用 ON 条件,只有那些使为真才被插入到 t2。
3、 OUTER (JOIN):如果指定了 OUTER JOIN(相对于 CROSS JOIN 或 INNER JOIN),保留表中未找到匹配的行将作为外部行添加到 t2,生成 t3。如果 FROM 子句包含两个以上的表,则对上一个联接生成的
结果表和下一个表重复执行步骤 1 到步骤 3,直到处理完所有的表位置。