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. 【转载】 socket recv 和 read

    转自: http://blog.csdn.net/rankun1/article/details/50488989 send函数工作原理: send函数只负责将数据提交给协议层. 当调用该函数时,se ...

  2. 1217. [HNOI2003]消防局的设立【贪心】

    Description 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类只修建了n-1条道路来 连接这些基地,并且每两个基地都能够通过道路到达,所以所有的基地形成 ...

  3. [HAOI2015]按位或

    题目 好神的题啊 我们发现我们求这个东西如果常规\(dp\)的话可以建出一张拓扑图来,但是边的级别高达\(3^n\),转移的时候还要解方程显然不能通过本题 我们考虑神仙的\(min-max\)容斥 设 ...

  4. c++——初始化列表

    多个对象构造和析构 1对象初始化列表 1)对象初始化列表出现原因 1.必须这样做: 如果我们有一个类成员,它本身是一个类或者是一个结构,而且这个成员它只有一个带参数的构造函数,没有默认构造函数.这时要 ...

  5. Linux系统管理命令

    Linux系统管理命令 命令 说明 stat 显示指定文件的相关信息,比ls命令显示内容更多 who 显示在线登录用户 hostname 显示主机名称 uname 显示系统信息 top 显示当前系统中 ...

  6. ZOJ3202-Second-price Auction(根据输入输出判断是队列还是栈)

    A Stack or A Queue? Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu S ...

  7. 【C++0x】表达式之类型(decltype)

      C++0x引入了新的关键字decltype,它是一个操作符,用来取得表达式的类型,主要在泛型编程中使用.这里,简单介绍一下语法规则. 语法形式:decltype (expression)其中,这里 ...

  8. centos配置静态ip地址

    1.输入以下命令: vim /etc/sysconfig/network-scripts/ifcfg-eth0 2.注释掉BOOTPROTO=dhcp 3.添加如下内容: ONBOOT=yes 表示开 ...

  9. jQuery 插件运用

    1. fullpage 插件(全屏) 官网:http://www.jq22.com/ jqueryui 官网:http://jqueryui.com/draggable/ 1.1 使用方法 引入文件 ...

  10. mac上ssh工具,包含简易的文件传输功能

    最近需要在mac上连ssh,但是之前在mac上用的都是简易的SSH Shell,没有找到传输文件的功能. 这时候就非常想念win上的winscp,有个界面,传点东西还是很直观的. 几经搜寻,终于找到一 ...