现在的位置: 首页 > 综合 > 正文

SELECT执行顺序

2012年12月30日 ⁄ 综合 ⁄ 共 1206字 ⁄ 字号 评论关闭

最近准备数据库DBA的面试,碰到考察select语句执行顺序的问题,见附,回头查询了下王珊老师的《数据库系统概论》,里面给SELECT的定义格式为:
SELECT[ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]…
FROM<表名或视图名>[,<表名或视图名>]…
[WHERE<条件表达式>]
[GROUP BY<列名1>][HAVING<条件表达式>]
[ORDER BY<列名2>][ASC|DESC]
文中其对SELECT语句的含义解释为:根据where子句的条件表达式,从FROM子句指定的基本表或视图中找出满足条件的元组,再按Select子句中的目标列表达式,选出元组中的属性值形成结果表。如果有GROUP子句,则将结果按<列名1>的值进行分组,该属性列值相等的元组为一个组。通常会在每组中作用集函数(sum,count,max,min等)。如果GROUP子句带HAVING短语,则只有满足指定条件的组才会输出。如果有ORDER子句,则结果表还要按<列名2>的值的升序或降序排序。


我反复体会了好几遍,感觉这样的叙述很容易让人得出SELECT语句执行顺序为:from,where,目标列表达式,group,使用聚集函数计算,having,order的结论,但是这样的执行顺序总感觉特别扭,与所体会的SELECT的用法不那么匹配,通过网络调研,得到如下结果,特分享出来,希望对大家有所帮助:
1、from子句组装来自不同数据源的数据;
2、where子句基于指定的条件对记录行进行筛选;
3、group by子句将数据划分为多个分组;
4、使用聚集函数进行计算;
5、使用having子句筛选分组;
6、计算所有的表达式;
7、使用order by对结果集进行排序。


有了上述这样的认识,我们来做附录上的两到SQL面试题,答案将很容易,分别是E,C
1)in a select statement that includes a where clause,where is the group by clause placed in the select statement?______。
A. immediately after the select clause
B. before the where clause
C. before the from clause
D. after the order by clause
E. after the where clause
2)in a select statement that includes a where clause,where is the order by clause placed in the select statement?______.
A.immediately after the select clause
B.before the where clause
C.after all clause
D.after the where clause
E.before the from clause
 

抱歉!评论已关闭.