当前位置:网站首页>Execution of SQL statement
Execution of SQL statement
2020-11-08 21:14:00 【Let me love you】
SQL, Script query language , The order in which the code is processed is not in the order of the scripting language , This is the most obvious feature different from other programming languages .
SQL Language is common, such as ,Mysql,HiveQL,Oracle etc. , Although there are some grammatical differences , But they're interpreting query scripts , In particular, the execution sequence of parsing statements has commonness . If you decompose a scripting language into a series of statements , So what is the order of execution of these statements ?
Select Statement execution order
select The execution order of the query statement , It can be seen that the first execution is FROM Clause , Finally, execute ORDER BY
Execution order :
(1) FROM
(2) ON
(3) JOIN
(4) WHERE
(5) GROUP BY
(6) WITH {CUBE | ROLLUP}
(7) HAVING
(8) SELECT
(9) DISTINCT
(10) ORDER BY
(11) LIMIT
7 SELECT ( Query content )
1 FROM <left table> ( Query the main table )
3 <join type> JOIN <right table> ( Associated table )
2 ON <join condition> ( The condition of two tables Association )
4 WHERE ( Conditions for filtering query results )
5 GROUP BY ( Grouping conditions )
6 HAVING ( Conditions for filtering groups )
8 ORDER BY ( Sorting conditions )
# The preceding number is the order in which the actual program is executed ,
# To develop a good code format , The empty line, the empty line , It should be capitalized ( Try to keep the words in uppercase for database operations , Keep the contents of library, table and column in lowercase as much as possible )
A brief introduction to the above logical sequence
Each of the above steps produces a virtual table , The virtual table is used as input for the next step . Only the table generated in the last step is returned to the caller .
- FROM: Yes FROM The first two tables in the clause perform the cartesian product ( Cross connection ), Generate virtual tables VT1, Select a relatively small table as the base table .
- ON: Yes VT1 application ON Filter , Only those that are true are inserted VT2.
- OUTER (JOIN): If you specify OUTER JOIN( be relative to CROSS JOIN or INNER JOIN), No matching rows were found in the reservation table to be added as external rows to VT2, Generate TV3.
- WHERE: Yes VT3 application WHERE Filter , Only the emissary true Rows of VT4.
- GROUP BY: Press GROUP BY Column pairs in clause VT4 Group the rows in , Generate VT5.
- CUTE|ROLLUP: Insert the supergroup into VT5, Generate VT6.
- HAVING: Yes VT6 application HAVING Filter , Only the emissary true The group inserted into VT7.
- SELECT: Handle SELECT list , produce VT8.
- DISTINCT: Repeat lines from VT8 Delete in , obtain VT9.
- ORDER BY: take VT9 The lines in the press ORDER BY Column list order in the clause , Generate a cursor (VC10).
- LIMIT(TOP): from VC10 Selects the rows at the beginning of , To generate table VT11, And return it to the caller .


版权声明
本文为[Let me love you]所创,转载请带上原文链接,感谢
边栏推荐
- getBytes之 LengthFieldBasedFrameDecoder服务端解析
- Introduction skills of big data software learning
- 【云服务】阿里云服务器ECS实例规格那么多,如何选型?最佳实践说明
- Problem solving templates for subsequence problems in dynamic programming
- Flink series (0) -- Preparation (basic stream processing)
- [200 interview experience], programmer interview, common interview questions analysis
- 接口测试工具Eolinker进行post请求
- Deep copy
- Dynamic ReLU:微软推出提点神器,可能是最好的ReLU改进 | ECCV 2020
- Brief VIM training strategy
猜你喜欢

How to deploy pytorch lightning model to production

CMS garbage collector

Classical dynamic programming: longest common subsequence

Flink series (0) -- Preparation (basic stream processing)

. net core cross platform resource monitoring library and dotnet tool

Django's simple user system (3)

使用基于GAN的过采样技术提高非平衡COVID-19死亡率预测的模型准确性

Flink系列(0)——准备篇(流处理基础)

Python应用场景多不多?

实现图片的复制
随机推荐
使用基于GAN的过采样技术提高非平衡COVID-19死亡率预测的模型准确性
Brief VIM training strategy
【云服务】阿里云服务器ECS实例规格那么多,如何选型?最佳实践说明
npm install 无响应解决方案
[200 interview experience], programmer interview, common interview questions analysis
Deep copy
进程 线程 协程
CMS垃圾收集器
LeetCode 45 跳跃游戏II
ITerm2 配置和美化
寻找性能更优秀的动态 Getter 和 Setter 方案
Dynamic relu: Microsoft's refreshing device may be the best relu improvement | ECCV 2020
Iptables from introduction to mastery
C / C + + learning diary: original code, inverse code and complement code
200人的程序员面试经验,都在这里了
解决go get下载包失败问题
go语言参数传递到底是传值还是传引用?
CountDownLatch 瞬间炸裂!同基于 AQS,凭什么 CyclicBarrier 可以这么秀?
How to make scripts compatible with both Python 2 and python 3?
第一部分——第1章概述