tab_1.pngtab_1
tab_2.pngtab_2
代码执行顺序
(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>
VT_1.png执行FROM 形成笛卡尔积
VT_2.png执行ON过滤
添加外部行
LEFT OUTER JOIN
把左表记为保留表,得到的结果为(也就是我们查询得到的结果 VT_3):
Left Join(VT_3).png
把右表记为保留表,得到的结果为:
Right Join.png
FULL OUTER JOIN
把左右表都作为保留表,得到的结果为:
Full Join.png
VT_4.png执行WHERE过滤
VT_5.png执行GROUP BY分组
VT_6.png执行HAVING过滤
VT_7.pngSELECT查找
执行DISTINCT子句
创建一张内存临时表,当内存不够的时候,就需要存入硬盘
这张表会比原先的虚表多一个唯一的索引,以此来去除重复的数据
VT_8.png执行ORDER BY子句
VT_9.png执行LIMIT子句
网友评论