通过集合的方式来理解SQL的七种join,更加直观易懂
下图展示了 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法。

下面我们来一个个看:

可以理解为取两个集合根据条件取交集
SELECT <select_list>
FROM Table_A A
INNER JOIN Table_B B
ON A.Key = B.Key

取左边集合的全集
SELECT <select_list>
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key

同上,取右边集合的全集
SELECT <select_list>
FROM Table_A A
RIGHT JOIN Table_B B
ON A.Key = B.Key

取两个集合的并集
SELECT <select_list>
FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.Key = B.Key
但是如果是MySQL,就没有外连接,不过可以通过左右连接进行union来实现,注意是union 不是union all ,union可以去重
SELECT * FROM Table_A A LEFT JOIN Table_B B ON A.Key = B.Key
UNION
SELECT * FROM Table_A A RIGHT JOIN Table_B B ON A.Key = B.Key;

左连接的集合减去内连接,这里和集合的减法一样
SELECT <select_list>
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key
WHERE B.Key IS NULL

同上
SELECT <select_list>
FROM Table_A A
RIGHT JOIN Table_B B
ON A.Key = B.Key
WHERE A.Key IS NULL

全连接减内连接,得到两个集合不相关的部分
SELECT <select_list>
FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.Key = B.Key
WHERE A.Key IS NULL OR B.Key IS NULL