Microsoft SQL Server 2008 技术内幕:T-SQL查询 笔记(一)
2011-08-12 00:11
525 查看
逻辑查询处理的各个阶段
sqlserver select 执行顺序
(5) select (5-2) distinct(5-3) top (<top_specification>)(5-1)<select_list>
(1) from(1-j)<left_table> <join_type>join <right_table> on <on_predicate>
|(1-a)<left_table> <apply_type> apply <right_table_experssion> as <alias>
|(1-p)<left_table> pivot(<pivot_spectification>) as <alias>
|(1-u)<left_table> unpivot unpivot(<unpivot_specification>) as <alias>
(2) where <where_predicate>
(3) group by <group_by_specification>
(4) having <having_precification>
(6) order by <order_by_list>
逻辑查询阶段简介
1-->From :此阶段标识出要查询的来源表,处理表运算符,每个表运算符也会应用一系列子阶段。例如:在联接运算符中涉及到的阶段是笛卡尔积,On筛选器和添加外部行。并生成虚拟表供下一个操作步骤;
1.1-->笛卡尔积:此阶段将两个表的数据进行交叉联接,并生成虚拟表
1.2-->on筛选器:根据中的条件来筛选笛卡尔积虚拟表中的数据,并将满足条件的数据插入到新的虚拟表中
1.3-->添加外部行:如果指定了OUTER JOIN(相对于CROSS JOIN 或INNER JOIN),则将保留表中没有找到匹配的行,插入笛卡尔积虚拟表中,并将生 成新的虚拟表,进一步操作
2-->Where 操作 此阶段根据where子句中出现的谓词对满足on操作后保留的虚拟表进行条件筛选。将满足条件的数据插入到新的虚拟表中
3-->Group By 按照group by 中指定的列名列表将where操作后的虚拟中的数据进行分组,最终每个分组只有一个数据行,
4-->Having 对分组后的数据进行再一次条件筛选,并生成新的虚拟表,
5-->Select 处理select 子句中的元素
5.1-->计算select子句中的表达式
5.2-->Distinct 删除having后的重复数据
5.3-->TOP 根据order by 子句中定义的逻辑顺序,从前面操作的虚拟数据表中提取相应的记录数据
6-->Order By 根据order by 子句中指定的列名列表对数据进行排序,并生成游标
sqlserver select 执行顺序
(5) select (5-2) distinct(5-3) top (<top_specification>)(5-1)<select_list>
(1) from(1-j)<left_table> <join_type>join <right_table> on <on_predicate>
|(1-a)<left_table> <apply_type> apply <right_table_experssion> as <alias>
|(1-p)<left_table> pivot(<pivot_spectification>) as <alias>
|(1-u)<left_table> unpivot unpivot(<unpivot_specification>) as <alias>
(2) where <where_predicate>
(3) group by <group_by_specification>
(4) having <having_precification>
(6) order by <order_by_list>
逻辑查询阶段简介
1-->From :此阶段标识出要查询的来源表,处理表运算符,每个表运算符也会应用一系列子阶段。例如:在联接运算符中涉及到的阶段是笛卡尔积,On筛选器和添加外部行。并生成虚拟表供下一个操作步骤;
1.1-->笛卡尔积:此阶段将两个表的数据进行交叉联接,并生成虚拟表
1.2-->on筛选器:根据中的条件来筛选笛卡尔积虚拟表中的数据,并将满足条件的数据插入到新的虚拟表中
1.3-->添加外部行:如果指定了OUTER JOIN(相对于CROSS JOIN 或INNER JOIN),则将保留表中没有找到匹配的行,插入笛卡尔积虚拟表中,并将生 成新的虚拟表,进一步操作
2-->Where 操作 此阶段根据where子句中出现的谓词对满足on操作后保留的虚拟表进行条件筛选。将满足条件的数据插入到新的虚拟表中
3-->Group By 按照group by 中指定的列名列表将where操作后的虚拟中的数据进行分组,最终每个分组只有一个数据行,
4-->Having 对分组后的数据进行再一次条件筛选,并生成新的虚拟表,
5-->Select 处理select 子句中的元素
5.1-->计算select子句中的表达式
5.2-->Distinct 删除having后的重复数据
5.3-->TOP 根据order by 子句中定义的逻辑顺序,从前面操作的虚拟数据表中提取相应的记录数据
6-->Order By 根据order by 子句中指定的列名列表对数据进行排序,并生成游标
相关文章推荐
- 笔记-Microsoft SQL Server 2008技术内幕:T-SQL语言基础-01 T-SQL查询和编程基础
- 笔记-Microsoft SQL Server 2008技术内幕:T-SQL语言基础-02 单表查询
- 笔记-Microsoft SQL Server 2008技术内幕:T-SQL语言基础-03 联接查询
- Microsoft SQL Server 2008 技术内幕:T-SQL查询 逻辑查询处理阶段(一)
- 笔记-Microsoft SQL Server 2008技术内幕:T-SQL语言基础-06 集合运算
- 笔记-Microsoft SQL Server 2008技术内幕:T-SQL语言基础-09 事务和并发
- 【SqlServer】Microsoft SQL Server 2008技术内幕:T-SQL查询 读书笔记(一)
- 笔记-Microsoft SQL Server 2008技术内幕:T-SQL语言基础-07 透视、逆透视及分组集
- 笔记-Microsoft SQL Server 2008技术内幕:T-SQL语言基础-10 可编程对象
- 笔记-Microsoft SQL Server 2008技术内幕:T-SQL语言基础-08 数据修改
- 笔记-Microsoft SQL Server 2008技术内幕:T-SQL语言基础-05 表表达式
- Microsoft SQL Server 2005技术内幕:T-SQL查询笔记
- 【原创】Microsoft SQL Server 2005技术内幕:T-SQ程序设计 学习笔记
- SQLServer 2008 技术内幕——T-SQL 查询 笔记
- SQLSERVER 2008 技术内幕 T-SQL查询 笔记1: SQL 执行顺序
- 学习Microsoft SQL Server 2008技术内幕:T-SQL语法基础--第4章
- 学习《Microsoft SQL Server 2008 技术内幕:T-SQL 语言基础 》之一:学习资料、数据库、数据库脚本准备
- Microsoft SQL Server 2008技术内幕:T-SQL语言基础 第二章课后练习答案
- 学习Microsoft SQL Server 2008技术内幕:T-SQL语法基础
- Microsoft SQL Server 2008技术内幕:T-SQL语言基础