首页技术文章正文

[]SQL中Select语句执行顺序【黑马java培训】

更新时间:2019年07月26日 10时50分50秒 来源:黑马程序员论坛

一   SQL中Select语句执行顺序
        1、from子句组装来自不同数据源的数据;
        2、where子句基于指定的条件对记录行进行筛选;
        3、group by子句将数据划分为多个分组;
        4、使用聚集函数进行计算;
        5、使用having子句筛选分组;
        6、计算所有的表达式;
        7、select 的字段;
        8、使用order by对结果集进行排序。

二   SQL中Select语句处理步骤详细说明
        SQL语言不同于其他编程语言的最明显特征是处理代码的顺序。在大多数据库语言中,代码按编码顺序被处理。
        但在SQL语句中,第一个被处理的子句式FROM,而不是第一出现的SELECT。SQL查询处理的步骤序号如下:
        (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>
        (8) SELECT
        (9) DISTINCT
        (9) ORDER BY <order_by_list>
        (10) <TOP_specification> <select_list>
  以上每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只有最后一步生成的表才会会给调用者。        如果没有在查询中指定某一个子句,将跳过相应的步骤。
  逻辑查询处理阶段说明如下:
  1、 FROM:对FROM子句中的前两个表执行笛卡尔积(交叉联接),生成虚拟表VT1。
  2、 ON:对VT1应用ON筛选器,只有那些使为真才被插入到TV2。
  3、 OUTER (JOIN):如果指定了OUTER JOIN(相对于CROSS JOIN或INNER JOIN),保留表中未找到匹配的行将作为外部行添加到VT2,生成TV3。如果FROM子句包含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤1到步骤3,直到处理完所有的表位置。
  4、 WHERE:对TV3应用WHERE筛选器,只有使为true的行才插入TV4。
  5、 GROUP BY:按GROUP BY子句中的列列表对TV4中的行进行分组,生成TV5。
  6、 CUTE|ROLLUP:把超组插入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的开始处选择指定数量或比例的行,生成表TV11,并返回给调用者。

推荐了解热门学科

java培训 Python人工智能 Web前端培训 PHP培训
区块链培训 影视制作培训 C++培训 产品经理培训
UI设计培训 新媒体培训 产品经理培训 Linux运维
大数据培训 智能机器人软件开发




传智播客是一家致力于培养高素质软件开发人才的科技公司“黑马程序员”是传智播客旗下高端IT教育品牌。自“黑马程序员”成立以来,教学研发团队一直致力于打造精品课程资源,不断在产、学、研3个层面创新自己的执教理念与教学方针,并集中“黑马程序员”的优势力量,针对性地出版了计算机系列教材50多册,制作教学视频数+套,发表各类技术文章数百篇。

传智播客从未停止思考

传智播客副总裁毕向东在2019IT培训行业变革大会提到,“传智播客意识到企业的用人需求已经从初级程序员升级到中高级程序员,具备多领域、多行业项目经验的人才成为企业用人的首选。”

中级程序员和初级程序员的差别在哪里?
项目经验。毕向东表示,“中级程序员和初级程序员最大的差别在于中级程序员比初级程序员多了三四年的工作经验,从而多出了更多的项目经验。“为此,传智播客研究院引进曾在知名IT企业如阿里、IBM就职的高级技术专家,集中研发面向中高级程序员的课程,用以满足企业用人需求,尽快补全IT行业所需的人才缺口。

何为中高级程序员课程?

传智播客进行了定义。中高级程序员课程,是在当前主流的初级程序员课程的基础上,增加多领域多行业的含金量项目,从技术的广度和深度上进行拓展“我们希望用5年的时间,打造上百个高含金量的项目,覆盖主流的32个行业。”传智播客课程研发总监于洋表示。




黑马程序员热门视频教程【点击播放】

Python入门教程完整版(懂中文就能学会) 零起点打开Java世界的大门
C++| 匠心之作 从0到1入门学编程 PHP|零基础入门开发者编程核心技术
Web前端入门教程_Web前端html+css+JavaScript 软件测试入门到精通


在线咨询 我要报名
和我们在线交谈!