您的位置:首页 > 其它

SELECT执行顺序

2014-01-22 00:27 148 查看
【关于SELECT执行顺序的问题! 收藏】!!!

最近准备数据库DBA的面试,碰到考察select语句执行顺序的问题,见附,回头查询了下王珊老师的《数据库系统概论》,里面给SELECT的定义格式为:

SELECT[ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]…

FROM<表名或视图名>[,<表名或视图名>]…

[WHERE<条件表达式>]

[GROUPBY<列名1>][H***ING<条件表达式>]

[ORDER BY<列名2>][ASC|DESC]

文中其对SELECT语句的含义解释为:根据where子句的条件表达式,从FROM子句指定的基本表或视图中找出满足条件的元组,再按Select子句中的目标列表达式,选出元组中的属性值形成结果表。如果有GROUP子句,则将结果按<列名1>的值进行分组,该属性列值相等的元组为一个组。通常会在每组中作用集函数(sum,count,max,min等)。如果GROUP子句带H***ING短语,则只有满足指定条件的组才会输出。如果有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 thegroup 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 theorder 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

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lijigang1982/archive/2008/04/10/2272099.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: