sql执行顺序

来源:互联网 发布:淘宝修改手机绑定 编辑:程序博客网 时间:2024/06/05 16:54

sql执行顺序

SQL 不同于与其他编程语言的最明显特征是处理代码的顺序。在大数编程语言中,代码按编码顺序被处理,但是在SQL语言中,第一个被处理的子句是FROM子句,尽管SELECT语句第一个出现,但是几乎总是最后被处理。

每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只是最后一步生成的表才会返回 给调用者。如果没有在查询中指定某一子句,将跳过相应的步骤。下面是对应用于SQL server 2000和SQL Server 2005的各个逻辑步骤的简单描述。

(8)SELECT (9)DISTINCT  (11)<Top Num> <select list>(1)FROM [left_table](3)<join_type> JOIN <right_table>(2)ON <join_condition>(4)WHERE <where_condition>(5)GROUP BY <group_by_list>(6)WITH <CUBE | RollUP>(7)HAVING <having_condition>(10)ORDER BY <order_by_list>

逻辑查询处理阶段简介
1)FROM:对FROM子句中的前两个表执行笛卡尔积(Cartesian product)(交叉联接),生成虚拟表VT1
2)ON:对VT1应用ON筛选器。只有那些使为真的行才被插入VT2。
3)OUTER(JOIN):如 果指定了OUTER JOIN(相对于CROSS JOIN 或(INNER JOIN),保留表(preserved table:左外部联接把左表标记为保留表,右外部联接把右表标记为保留表,完全外部联接把两个表都标记为保留表)中未找到匹配的行将作为外部行添加到 VT2,生成VT3.如果FROM子句包含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤1到步骤3,直到处理完所有的表为止。
4)WHERE:对VT3应用WHERE筛选器。只有使为true的行才被插入VT4.
5)GROUP BY:按GROUP BY子句中的列列表对VT4中的行分组,生成VT5.
6)CUBE|ROLLUP:把超组(Suppergroups)插入VT5,生成VT6.
7)HAVING:对VT6应用HAVING筛选器。只有使为true的组才会被插入VT7.
8)SELECT:处理SELECT列表,产生VT8.
9)DISTINCT:将重复的行从VT8中移除,产生VT9.
10)ORDER BY:将VT9中的行按ORDER BY 子句中的列列表排序,生成游标(VC10).
11)TOP:从VC10的开始处选择指定数量或比例的行,生成表VT11,并返回调用者。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 丈夫面前侵犯入侵在线看 兄弟侵犯大嫂5中文字幕在线 暴风雨夜与妻子朋友独处 年轻的女老板3中文字 兄弟侵犯大嫂中文字幕迅雷视频 大香煮蕉伊在线网视频推手 91青青城线在人线免费人人人 91青青城人线在人线 95青青成线人人 青青成线小说 青青成线人线免 第一成一肉区免 费91 欧洲第一肉场 欧洲第一成肉区免 费91ap 免费欧洲第一成肉区免 费91 欧洲第一成一肉区免 费9 欧洲第一成一肉区免 费91人雨马 欧洲笫一肉区l1041 久碰人人澡人人澡人人澡人人澡 看欧洲第一成肉区免 免费在 线人擦人人搞人视频人人人 人人差人人搞人视频 人人看人人揉人人捏动漫 超越人人夜人人看视频 人人玩人人弄人槽视频动漫 草人人拍人人躁 人人人人看人谢97 免费在 线人擦人人搞人视频动漫视频 人人看人人揉人人捏视频 青青成线人线免费公开 亚成区1216成线人 青青成年在人线免费人人拍人人 人玩人人弄人人 人人看人人揉人人捏免费线看 人上人人玩人人与人意义 人在人上人在肉中 人下人人上人捧人 八人来人人上人个草人 人捧人 人上人 人踩人 人上人捧人上人人下人踩人下人 上人 上口人人人 人上人