T-SQL中select查询的逻辑顺序

select查询的逻辑顺序

T-SQL与其他的程序语言相比,差异很大,主要是其逻辑顺序。

大部分程序是按照代码的先后顺序执行。但是T-SQL不同,

具体参见图

T-SQL执行,一般是是产生虚拟表,经过不同的步骤缩小返回的

数据记。若干没有某个步骤,则跳过,执行下一个存在的步骤。

下面就具体的执行顺序,如下说明。

S1:[FROM]

指定数据源,生成VT1。数据源主要是三种形式

* 数据基础表或者表的连接

* 视图或者返回表的函数

* 子查询

S2:[ON]

在VT1内的数据,当条件成立是将符合条件的数据插入VT2。

S3:[join]

两个源连接,此处需要注意outer join ,即VT2内没有对应的

外部记录,也保存值VT3。

强调一下逻辑处理,join执行时,不是按照用户编写的join语法

的先后顺序执行,而是找出最佳的join顺序并执行。

S4:[where]

筛选VT4的数据,将符合条件的数据组成VT4.

S5:[GROUP BY ]

指定VT4的分组方式,执行

 

结果生成VT5.

S6:[CUBE|ROLLUP]

对VT5的结果数据进一步GROUP BY 操作,生成VT6.

S7:[having]

判断VT6所完成的分组表的字段是否符合having的设置条件,符合条件的

保存值VT7.

S8:[select]

通过select生成返回结果,选择符合要求的列,生成VT8.

S9:[DISTINCT]

移除VT8的重复记录,生成VT9.

S10:[ORDER BY ]

执行VT9的排序方式,排序后数据插入VT10.

S11:[TOP]

将VT10的符合条件的前N条数据,插入VT11.

S12:[返回结果列表]

返回执行项目(列,表达式,变量,常量),并用逗号隔开。

S13:[into]

将“返回结果列表”的数据以及数据类型结构创建新表,并

使用“新表名”指定数据表名。

注意:

select ... into...与 into ... select的区别。

本节从理论上介绍了,查询的执行顺序。下一节介绍

查询的结果集,格式化的结果集。

posted on 2026-05-13 15:20  panpeng666  阅读(19)  评论(0)    收藏  举报

导航