1 引言

  SQL操作往往是程序员必备的技能,对于算法工程师而言,熟练掌握SQL操作则更为重要。本文以《SQL语句执行顺序》作为学习资料,总结SQL的理论部分。

2 SQL查询语句的执行顺序

  SQL语句与其他代码的处理顺序不同,在SQL中,第一个被处理的子句是FROM子句,尽管SELECT语句第一个出现,但是几乎总是最后被处理。

  SQL语句的执行中,每个步骤都会产生一个虚拟表,虚拟表的作用是作为下一个步骤的输入。这些虚拟表对于调用者不可用,只是最后一步生成的表才会返回给调用者。

  那么SQL语句的运行顺序到底是怎样的呢?

  

  1. FROM:对FROM子句中的前两个表执行笛卡尔积,生成虚拟表VT1;
  2. ON:对VT1应用ON筛选器,只有那些满足<join_condition>的行才被插入VT2;
  3. OUTER(JOIN):如果指定OUTER JOIN(包括LEFT OUTER JOIN、RIGHT OUTER JOIN和FULL OUTER JOIN,经常省略OUTER)中未找到匹配的行将作为外部行添加到VT2,生成VT3。
  4. WHERE:对VT3应用WHERE筛选器,只有满足<where_condition>的行才被插入VT4;
  5. GROUP BY:按GROUP BY子句中的列队VT4进行行分组,生成VT5;
  6. CUBE|ROLLUP:把超组插入VT5,生成VT6;
  7. HAVING:对VT6应用HAVING筛选器。只有满足<having_condition>的行才被插入VT7;
  8. SELECT:处理SELECT列表,产生VT8;
  9. DISTINCT:将重复的行从VT8中移除,产生VT9;
  10. ORDER BY:将VT9中的行按ORDER BY子句中的列排序,生成游标(VC10);
  11. TOP:从VC10的开始处选择指定数量或比例的行,生成表VT11,并返回调用者;

3 参考资料

  SQL语句执行顺序

算法工程师进化-SQL的更多相关文章

  1. 算法工程师进化-NLP之主题模型

    1 引言 主题模型是文本挖掘的重要工具,近年来在学术界和工业届都获得了非常多的关注.学术界的工作主要集中在建模层面,即提出各种各样的主题模型来适应不同的场景,因此缺乏指导主题模型在工业场景落地的资源和 ...

  2. sloth——算法工程师标注数据的福音

    一般算法工程师做标注,都要先开发个标注工具,无非下面几个选项: 1.mfc,C#,优点是交互界面友好,开发难度适中,缺点是没法跨平台 2.matlab,优点是可以跨平台,开发难度非常低,缺点是速度慢. ...

  3. 阿里巴巴算法工程师四面(三轮技术+hr面)详细面经

    阿里面试总结: 一遍一遍地刷阿里网站,今天发现“面试中”变成“待跟进offer”了,写个面经攒人品,希望offer通知邮件早点来吧. 我当时投简历时投了C/C++工程师,其实也没经过啥考虑,因为我一开 ...

  4. 算法工程师:双非渣硕是如何获得百度、京东双SP

    本人本科硕士皆双非,和牛客大佬们没得比,目前拿到的还可以的offer就是百度SP和京东SP,都是做的推荐算法,其他的不说了. 先说一下个人经历吧,学校比较水,实验室没有项目,实习经历:腾讯实习+滴滴实 ...

  5. 算法工程师想进一步提高竞争力?向TensorFlow开源社区贡献你的代码吧

    算法工程师为什么也要向社区贡献代码? [作者:DeepLearningStack,阿里巴巴算法工程师,开源TensorFlow Contributor] “做算法的人要熟悉算法框架源码吗?算法工程师难 ...

  6. 《AI算法工程师手册》

    本文转载自:http://www.huaxiaozhuan.com/ 这是一份机器学习算法和技能的学习手册,可以作为学习工作的参考,都看一遍应该能收获满满吧. 作者华校专,曾任阿里巴巴资深算法工程师, ...

  7. (zhuan) 大牛讲堂 | 算法工程师入门第二期-穆黎森讲增强学习

    大牛讲堂 | 算法工程师入门第二期-穆黎森讲增强学习 2017-07-13 HorizonRobotics

  8. 算法工程师A

    美团点评2017校招笔试真题-算法工程师A   美团点评2017校招笔试真题-算法工程师A 1.下面哪种STL容器的实现和其它三个不一样 A. set B. deque C. multimap D. ...

  9. 算法工程师B

    美团点评2017校招笔试真题-算法工程师B   1.以下关于经典的k-means聚类的说法哪个是错误的? A:k-means聚类算法是全局收敛的 B:k-means的聚类结果和初始聚类中心点的选取有关 ...

随机推荐

  1. idea html热部署

    IDEA SpringBoot 热部署+html修改无需make自动刷新 收藏 HeyS1 发表于 3个月前 阅读 310 收藏 2 点赞 0 评论 0 特邀IBM大咖的主题沙龙,5月20日·北京·3 ...

  2. 1056/1862. [ZJOI2006]GameZ游戏排名系统【平衡树-splay】

    Description GameZ为他们最新推出的游戏开通了一个网站.世界各地的玩家都可以将自己的游戏得分上传到网站上.这样就可以看到自己在世界上的排名.得分越高,排名就越靠前.当两个玩家的名次相同时 ...

  3. 使用 BEGINCONTENT() 和 ENDCONTENT() 设定 YII 的 LAYOUTS

    Yii 的 views/layouts 是用来放置 layouts 的目录,在默认的情况下会有 main.php 和 column1.php 和 column2.php. main.php 内容定义了 ...

  4. Java基础加强之并发(三)Thread中start()和run()的区别

    Thread中start()和run()的区别 start() : 它的作用是启动一个新线程,新线程会执行相应的run()方法.start()不能被重复调用.run()   : run()就和普通的成 ...

  5. 20145203盖泽双 《Java程序设计》第十周学习总结

    20145203盖泽双 <Java程序设计>第十周学习总结 教材学习内容总结 一.网络概述 1.网络编程就是两个或多个设备(程序)之间的数据交换. 2.识别网络上的每个设备:①IP地址②域 ...

  6. 【转】打包2个10g文件 测试

    微博上kevin_prajna提了一个问题:“求Linux下一打包工具,需求:能把两个10G的文件打包成一个文件,时间在1分钟之内能接受!”. 暂且作答一下吧.首先问题是求解工具,那么我们忽略IO问题 ...

  7. 利用SimpleDateFormat进行时间的跨时区转换 - Java

    * 次方法主要用来将特定时区的时间转换成指定时区的时间,比如将北京时间“2018-04-08 15:40:49.031”,转换对应的美国东部时间是“2018-04-08 03:40:49.031”   ...

  8. Apache Shiro(一)-登录认证和权限管理初识

    What is Apache Shiro? Apache Shiro是一个功能强大.灵活的,开源的安全框架.它可以干净利落地处理身份验证.授权.企业会话管理和加密. Apache Shiro的首要目标 ...

  9. “C++动态绑定”相关问题探讨

    一.相关问题: 1. 基类.派生类的构造和析构顺序 2. 基类.派生类中virtual的取舍 二.测试代码: #include <iostream> class A { public: A ...

  10. 06_Java基础语法_第6天(自定义类、ArrayList集合)_讲义

    今日内容介绍 1.自定义类型的定义及使用 2.自定义类的内存图 3.ArrayList集合的基本功能 4.随机点名器案例及库存案例代码优化 01引用数据类型_类 * A: 数据类型 * a: java ...