博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
T-SQL查询的逻辑处理过程
阅读量:4931 次
发布时间:2019-06-11

本文共 1103 字,大约阅读时间需要 3 分钟。

对于一个查询SQL而言,通常将其逻辑处理过程分成7个大的阶段

分别是:

1.FROM

2.WHERE

3.GROUP BY

4.HAVING

5.SELECT

6.ORDER BY

7.TOP/OFFSET/FETCH

1、SQL语句执行阶段示例.

(5)select (5-2) distinct(5-3) top(
)(5-1)
(1)from (1-J)
join
on
(1-A)
apply
as
(1-P)
pivot (
) as
(1-U)
unpivot (
) as
(2)where
(3)group by
(4)having
(6)order by

2、流程图

 

流程:

1.FROM:该步骤用于验证查询的源表,并处理表操作符,生成虚拟表VT1

  1-1.如果存在左表和右表的交叉连接(求笛卡尔积),生成一个虚拟表VT1_1.

  1-2.对笛卡尔积(VT1)应用ON筛选器,生成虚拟表VT1_2.

  1-3.如果是外部连接,1-2中被过滤掉的数据将会被重新添加到虚拟表VT1_2中,生成虚拟表VT1_3.

2.WHERE:对虚拟表VT1应用WHERE筛选器,生成虚拟表VT2

3.GROUP BY:将VT2中的数据进行分组,生成VT3,如果语句包含WITH CUBE 或者WITH ROLLUP语句,则将分组统计结果再次加总后插入VT3,生成VT3_1.

4.HAVING:对VT3虚拟表应用HAVING筛选器,生成虚拟表VT4.

5.SELECT:处理SELECT中的子元素,生成虚拟表VT5.

  5-1.计算表达式:处理SELECT列表中的计算表达式,生成VT5_1.

  5-2.DISTINCT:处理VT5_1中的重复行,生成VT5_2.

6.ORDER BY:对VT5_2进行排序,生成一个游标VT6

  6-1.该步骤中已经可以使用SELECT列表中的列别名

  6-2.ORDER BY子句是应用到最终结果集上的,因此当SQL中出现UNION等关键字时,ORDER BY执行顺序在UNION操作之后.

7.TOP:根据ORDER BY子句中指定的排序规则,从VT6中筛选指定数量的行

 

参考资料:王晓文、张洪举<<锋利的SQL>>

转载于:https://www.cnblogs.com/Jabben_Yi/p/5402281.html

你可能感兴趣的文章
css3媒体查询简单实例
查看>>
java-properties配置文件
查看>>
算法学习-哈希表
查看>>
python操作mysql
查看>>
javascript 学习1
查看>>
Angular应用架构设计-3:Ngrx Store
查看>>
<a>标签文件下载文件名乱码问题
查看>>
HTTP抓包
查看>>
Python项目中使用配置文件
查看>>
html5的学习日志
查看>>
Python数据分析_Pandas01_数据框的创建和选取
查看>>
RESTful-rest_framework应用第一篇
查看>>
Console命令详解,让调试js代码变得更简单
查看>>
hdu4908 &amp; BestCoder Round #3 BestCoder Sequence(组合数学)
查看>>
Excel 导出
查看>>
拉登是我罩的队_第三周_需求改进&原型设计
查看>>
数据库got error 28 from storage engine问题
查看>>
RMQ 总结
查看>>
手撸ORM
查看>>
POJ---2406 Power Strings[求最长重复字串]
查看>>