可視化理解SQL的JOIN用法

SQL 可視化 教育 六月的大師兄 2017-05-06

相信熟悉SQL的人都知道SQL的JOIN語法,有幾種變形(INNER JOIN,LEFT JOIN,RIGHT JOIN等)。講解SQL的JOIN用法的文檔有很多,但多數時候在使用起來的時候還是易弄混,不易清楚的理解每種用法產生的結果集。下面我以圖解的方式,讓你對SQL的JOIN種種變形有一個清晰直觀的理解,從而更容易的理解並運用它。

首先,假設有A,B兩張表,結構及數據如下:

可視化理解SQL的JOIN用法

  • INNER JOIN

可視化理解SQL的JOIN用法

INNER JOIN產生的結果集是A表和B表的交集。

代碼如下:

可視化理解SQL的JOIN用法

結果如下:

可視化理解SQL的JOIN用法

  • LEFT JOIN

可視化理解SQL的JOIN用法

LEFT JOIN產生A表的完全集,而B表中匹配的則有值,沒有匹配的則以NULL填充。

代碼如下:

可視化理解SQL的JOIN用法

結果如下:

可視化理解SQL的JOIN用法

  • RIGHT JOIN

可視化理解SQL的JOIN用法

RIGHT JOIN和LEFT JOIN相對應,產生的是B表的完全集,而A表中匹配的則有值,沒有匹配的則以NULL填充。

代碼如下:

可視化理解SQL的JOIN用法

結果如下:

可視化理解SQL的JOIN用法

  • OUTER JOIN

可視化理解SQL的JOIN用法

OUTER JOIN也可以寫成FULL OUTER JOIN,產生的是A表和B表的並集。沒有匹配的記錄,仍是以NULL填充。

代碼如下:

可視化理解SQL的JOIN用法

結果如下:

可視化理解SQL的JOIN用法

  • LEFT Excluding JOIN

可視化理解SQL的JOIN用法

LEFT Excluding JOIN產生在A表中有而在B表中沒有的集合。

代碼如下:

可視化理解SQL的JOIN用法

結果如下:

可視化理解SQL的JOIN用法

  • RIGHT Excluding JOIN

可視化理解SQL的JOIN用法

RIGHT Excluding JOIN與LEFT Excluding JOIN相對應,產生的是B表中有而在A表中沒有的集合。

代碼如下:

可視化理解SQL的JOIN用法

結果如下:

可視化理解SQL的JOIN用法

  • OUTER Excluding JOIN

可視化理解SQL的JOIN用法

OUTER Excluding JOIN產生的是A表有而B表沒有,B表有而A表沒有的數據集。

代碼如下:

可視化理解SQL的JOIN用法

結果如下:

可視化理解SQL的JOIN用法

最後,下面這張圖整理了上面講的所有內容。

可視化理解SQL的JOIN用法

相關推薦

推薦中...