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
最近准备数据库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
相关文章推荐
- 水平型微指令与垂直型微指令
- 最小二乘拟合lsqcurvefit的…
- 晶体管收音机原理
- 计算机基础理论:原码、反码…
- 窗口句柄、窗口类对象以及窗…
- No valid Qt version set S…
- Smartfoxserver&nbsp;基础入门(…
- SmartFoxServer学习总结(转…
- Linux下Crond计划任务设置格式
- 一道常考fork题挖掘
- zookeeper安装--1. 下载源文件
- Cocos2d-x 3.0beta New Label新特性—描边,阴影,发光
- Hbase安装--错误2: Class path contains multiple SLF4J bindings
- 黑马程序员_java基础笔记(06)...集合
- Hbase 安装--错误1:Unknown out of band call #-2147483647
- hdu 1003 java
- [置顶] AChartEngine整体设计类组织方式
- 在keychain tool里,Request a certificate时,出错''The specified item could not be found in the keychain"
- visual studio 之 mysql 的配置及使用举例
- java方法的重写和重载