【精】一张图搞懂是SQL join,图解SQL的7种JOIN

通过集合的方式来理解SQL的七种join,更加直观易懂
下图展示了 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法。
【精】一张图搞懂是SQL join,图解SQL的7种JOIN_第1张图片
下面我们来一个个看:

1.INNER JOIN(内连接)

【精】一张图搞懂是SQL join,图解SQL的7种JOIN_第2张图片

可以理解为取两个集合根据条件取交集

SELECT <select_list> 
FROM Table_A A
INNER JOIN Table_B B
ON A.Key = B.Key

2.LEFT JOIN(左连接)

【精】一张图搞懂是SQL join,图解SQL的7种JOIN_第3张图片
取左边集合的全集

SELECT <select_list>
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key

3.RIGHT JOIN(右连接)

【精】一张图搞懂是SQL join,图解SQL的7种JOIN_第4张图片
同上,取右边集合的全集

SELECT <select_list>
FROM Table_A A
RIGHT JOIN Table_B B
ON A.Key = B.Key

4.OUTER JOIN(外连接)

【精】一张图搞懂是SQL join,图解SQL的7种JOIN_第5张图片
取两个集合的并集

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;

5.LEFT JOIN EXCLUDING INNER JOIN(左连接减内连接)

【精】一张图搞懂是SQL join,图解SQL的7种JOIN_第6张图片
左连接的集合减去内连接,这里和集合的减法一样

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

6.RIGHT JOIN EXCLUDING INNER JOIN(右连接减内连接)

【精】一张图搞懂是SQL join,图解SQL的7种JOIN_第7张图片
同上

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

7.OUTER JOIN EXCLUDING INNER JOIN(外连接减内连接)

【精】一张图搞懂是SQL join,图解SQL的7种JOIN_第8张图片
全连接减内连接,得到两个集合不相关的部分

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

你可能感兴趣的:(MySQL,面试,sql,数据库,mysql)