SQL逻辑查询语句执行顺序

2016-08-26  本文已影响0人  简书_捡书

tab_1

tab_1.png

tab_2

tab_2.png

代码执行顺序

(7) SELECT 
(8) DISTINCT <select_list>
(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) HAVING <having_condition>
(9) ORDER BY <order_by_condition>
(10) LIMIT <limit_number>

执行FROM 形成笛卡尔积

VT_1.png

执行ON过滤

VT_2.png

添加外部行

LEFT OUTER JOIN
把左表记为保留表,得到的结果为(也就是我们查询得到的结果 VT_3):


Left Join(VT_3).png

把右表记为保留表,得到的结果为:


Right Join.png

FULL OUTER JOIN
把左右表都作为保留表,得到的结果为:


Full Join.png

执行WHERE过滤

VT_4.png

执行GROUP BY分组

VT_5.png

执行HAVING过滤

VT_6.png

SELECT查找

VT_7.png

执行DISTINCT子句

创建一张内存临时表,当内存不够的时候,就需要存入硬盘
这张表会比原先的虚表多一个唯一的索引,以此来去除重复的数据

执行ORDER BY子句

VT_8.png

执行LIMIT子句

VT_9.png
上一篇 下一篇

猜你喜欢

热点阅读