一、交叉連接、內連接、外連接的區別
- 交叉連接又叫’笛卡爾積’,它是指不使用任何條件,直接將一個表的所有記錄和另一個表中的所有記錄一一匹配。
- 內連接 則是隻有條件的交叉連接,根據某個條件篩選出符合條件的記錄,不符合條件的記錄不會出現在結果集中,即內連接只連接匹配的行 。
- 外連接 其結果集中不僅包含符合連接條件的行,而且還會包括左表、右表或兩個表中的所有數據行,這三種情況依次稱之爲左外連接,右外連接,和全外連接
二、交叉連接
1. 並集 union
- UNION 用於合併兩個或多個 SELECT 語句的結果集,並消去表中任何重複行。
- 同時,每條 SELECT 語句中的列的順序必須相同,而且也要具有相同的數據類型,列的數量也必須相同。如果不想去掉重複的行,可以使用union all
2. 交集 join
3. 差集 not
- 假設有集合A和B,所有屬於A且不屬於B的元素的集合被稱爲A與B的差集。
示例:對於集合A = {a, b, c, d}和集合B = {b, c, w},則A與B 的差集爲{a, d}
4.笛卡爾積 CROSS JOIN
三、內連接
1. 等值連接inner join(不去重)
- select語句先看的是from語句,因爲from後的表起別名的話,where子句可以用,而select語句執行又在where子句之後。
2. 自然連接 natural join
3. 不等連接
- select * from A INNER JOIN B on A.col>B.col;
四、外連接
1. 左外連接
2. 右外連接
3. 全外連接
- mysql沒有專門提供一個全外連接的關鍵字,需要使用union關鍵字