sql server 学习之select语句总结(一) 查询处理的逻辑顺序 (返回结果列表( 01 ) from 表 表 (((((] select语句的基本组件 setp1:[from] from子句内可指定表的名称。在此步骤中,sql server会列出select语句使用的表,若指定join表则会一并列出,通 过交错
sql server 学习之select语句总结(一)
查询处理的逻辑顺序
(返回结果列表(01) from 表表 (((((]
select语句的基本组件 setp1:[from]
from子句内可指定表的名称。在此步骤中,sql server会列出select语句使用的表,若指定join表则会一并列出,通 过交错排列的方式,将可能的组合放入vt1(第一个虚拟表内)。
setp2:[on]
比较vt1内的数据,当条件成立时将正确的的数据插入vt2。
setp3:[outer(join)]
如果定义了outer join 而非 cross join 或 inner join,即保存的表vt2内没有对应的记录依然会被当做外部记录
而形成vt3。如果from子句中表的个数超过两个,则setp1~3会在join的执行结果与from子句所标记的下一个表
间重复执行,直到所有的表处理完毕。
setp4:[where 过滤条件]
过滤vt3中的数据,将符合条件的列形成vt4。
setp5: [group by]
group by 子句可用于指定vt4的分组方式,执行的结果形成vt5。
setp6:[cube|rollup]
cube|rollup子句会对setp5中已经group by的数据在做进一步的group by 操作。如果将setp5比作数据的小计
值,服务器空间,那么setp6就是计算数据的总计值,而产生的数据会被插入到vt6。
setp7: [having]
判断vt6所完成的分组表中的字段是否符合having设置的条件。当符合该条件时,会将其插入到vt7。
setp8: [select]
通过select生成返回结果,仅选符合条件要求的字段列表生成vt8。
setp9:[distinct]
移除vt8的重复数据记录,香港服务器,将结果插入vt9。
setp10:[order by order_list [asc|desc] ]
指定vt9的排序方式(递增或递减),并将排序后的结果形成vt10。
setp11:[top]
使用此关键字时,香港服务器,sql server会将vt10中符合条件的前n条数据插入到vt11,并返回给用户。
setp12: [返回结果列表]
指定返回项目(如描述结果集的列,表达式,变量或常数),并以逗号分隔列表。
setp13:[into新表名称]
可省略的自变量,方便用户以返回结果列表里的项目与数据类型结构创建新的表,并可使用新表名称所指定的
表名称。
posted on