算法工程师进化-SQL
1 引言
SQL操作往往是程序员必备的技能,对于算法工程师而言,熟练掌握SQL操作则更为重要。本文以《SQL语句执行顺序》作为学习资料,总结SQL的理论部分。
2 SQL查询语句的执行顺序
SQL语句与其他代码的处理顺序不同,在SQL中,第一个被处理的子句是FROM子句,尽管SELECT语句第一个出现,但是几乎总是最后被处理。
SQL语句的执行中,每个步骤都会产生一个虚拟表,虚拟表的作用是作为下一个步骤的输入。这些虚拟表对于调用者不可用,只是最后一步生成的表才会返回给调用者。
那么SQL语句的运行顺序到底是怎样的呢?

- FROM:对FROM子句中的前两个表执行笛卡尔积,生成虚拟表VT1;
- ON:对VT1应用ON筛选器,只有那些满足<join_condition>的行才被插入VT2;
- OUTER(JOIN):如果指定OUTER JOIN(包括LEFT OUTER JOIN、RIGHT OUTER JOIN和FULL OUTER JOIN,经常省略OUTER)中未找到匹配的行将作为外部行添加到VT2,生成VT3。
- WHERE:对VT3应用WHERE筛选器,只有满足<where_condition>的行才被插入VT4;
- GROUP BY:按GROUP BY子句中的列队VT4进行行分组,生成VT5;
- CUBE|ROLLUP:把超组插入VT5,生成VT6;
- HAVING:对VT6应用HAVING筛选器。只有满足<having_condition>的行才被插入VT7;
- SELECT:处理SELECT列表,产生VT8;
- DISTINCT:将重复的行从VT8中移除,产生VT9;
- ORDER BY:将VT9中的行按ORDER BY子句中的列排序,生成游标(VC10);
- TOP:从VC10的开始处选择指定数量或比例的行,生成表VT11,并返回调用者;
3 参考资料
算法工程师进化-SQL的更多相关文章
- 算法工程师进化-NLP之主题模型
1 引言 主题模型是文本挖掘的重要工具,近年来在学术界和工业届都获得了非常多的关注.学术界的工作主要集中在建模层面,即提出各种各样的主题模型来适应不同的场景,因此缺乏指导主题模型在工业场景落地的资源和 ...
- sloth——算法工程师标注数据的福音
一般算法工程师做标注,都要先开发个标注工具,无非下面几个选项: 1.mfc,C#,优点是交互界面友好,开发难度适中,缺点是没法跨平台 2.matlab,优点是可以跨平台,开发难度非常低,缺点是速度慢. ...
- 阿里巴巴算法工程师四面(三轮技术+hr面)详细面经
阿里面试总结: 一遍一遍地刷阿里网站,今天发现“面试中”变成“待跟进offer”了,写个面经攒人品,希望offer通知邮件早点来吧. 我当时投简历时投了C/C++工程师,其实也没经过啥考虑,因为我一开 ...
- 算法工程师:双非渣硕是如何获得百度、京东双SP
本人本科硕士皆双非,和牛客大佬们没得比,目前拿到的还可以的offer就是百度SP和京东SP,都是做的推荐算法,其他的不说了. 先说一下个人经历吧,学校比较水,实验室没有项目,实习经历:腾讯实习+滴滴实 ...
- 算法工程师想进一步提高竞争力?向TensorFlow开源社区贡献你的代码吧
算法工程师为什么也要向社区贡献代码? [作者:DeepLearningStack,阿里巴巴算法工程师,开源TensorFlow Contributor] “做算法的人要熟悉算法框架源码吗?算法工程师难 ...
- 《AI算法工程师手册》
本文转载自:http://www.huaxiaozhuan.com/ 这是一份机器学习算法和技能的学习手册,可以作为学习工作的参考,都看一遍应该能收获满满吧. 作者华校专,曾任阿里巴巴资深算法工程师, ...
- (zhuan) 大牛讲堂 | 算法工程师入门第二期-穆黎森讲增强学习
大牛讲堂 | 算法工程师入门第二期-穆黎森讲增强学习 2017-07-13 HorizonRobotics
- 算法工程师A
美团点评2017校招笔试真题-算法工程师A 美团点评2017校招笔试真题-算法工程师A 1.下面哪种STL容器的实现和其它三个不一样 A. set B. deque C. multimap D. ...
- 算法工程师B
美团点评2017校招笔试真题-算法工程师B 1.以下关于经典的k-means聚类的说法哪个是错误的? A:k-means聚类算法是全局收敛的 B:k-means的聚类结果和初始聚类中心点的选取有关 ...
随机推荐
- isa class superclass metaclass
http://www.cnblogs.com/feng9exe/p/7232915.html Note: 其实这里的难点就在于对 和 的区分. .class 当 target 是 Instance 则 ...
- 【CodeChef】Prime Distance On Tree
vjudge 给定一棵边长都是\(1\)的树,求有多少条路径长度为质数 树上路径自然是点分治去搞,但是发现要求是长度为质数,总不能对每一个质数都判断一遍吧 自然是不行的,这个东西显然是一个卷积,我们合 ...
- 【转】 java中Class对象详解和类名.class, class.forName(), getClass()区别
Class对象的生成方式如下: 1.类名.class 说明: JVM将使用类装载器, 将类装入内存(前提是:类还没有装入内存),不做类的初始化工作.返回Class的对象 2.Cla ...
- PHP MemCached高级缓存配置图文教程
memcache是一个高性能的分布式的内存对象缓存系统,它能够用来存储各种格式的数据,包括图像.视频.文件以及数据库检索的结果等. 1.Memcache相关介绍 memcache是一个高性能的 ...
- Hive学习之路 (十八)Hive的Shell操作
一.Hive的命令行 1.Hive支持的一些命令 Command Description quit Use quit or exit to leave the interactive shell. s ...
- Zookeeper框架Curator使用
本文参考自https://blog.csdn.net/wo541075754/article/details/69138878?utm_source=gold_browser_extension ht ...
- virtualbox+vagrant学习-2(command cli)-19-vagrant box命令
Status 格式: vagrant status [name|id] options只有 -h, --help 这将告诉你vagrant正在管理的机器的状态. 很容易就会忘记你的vagrant机器是 ...
- 关于html5 audio 标签在ios系统上不能正常自动播放的解决办法
由于 iOS Safari 限制不允许 audio autoplay, 必须用户主动交互(例如 click)后才能播放 audio, 因此我们通过一个用户交互事件来主动 play 一下 audio. ...
- 安装github教程
1.注意事项 .在FF和chrome会把GitHub.application当成一个应用程序下载下来,安装下载下来的程序也会失败的,只能通过ie直接安装. 2.要用https,不能用http. 2.安 ...
- CTF-Bugku-分析-信息提取
CTF-Bugku-分析-信息提取 最近刷题的时候看到了这道比较有趣的题.而且网上也没找到wp,所以分享一下我的思路. 信息提取: 题目链接:http://ctf.bugku.com/challeng ...