MySQL中表連接方式

爲了能夠很好理解MySQL中表連接方式,以如下兩個表作爲例子演示:

  • Table1:t1
id name
1 張三
2 李四
4 王五
  • Table2:t2
id age
1 18
2 20
3 19

 

1. 笛卡爾積

兩表關聯,把左表的列和右表的列通過笛卡爾積的形式表達出來。

  • 語法

    select * from t1 join t2

  • 結果

id name id age
1 張三 1 18
2 李四 1 18
4 王五 1 18
1 張三 2 20
2 李四 2 20
4 王五 2 20
1 張三 3 19
2 李四 3 19
4 王五 3 19

2.外連接

2.1 左外連接:left join

兩表關聯,左表全部保留,右表關聯不上用null表示。

  • 示意圖

在這裏插入圖片描述

  • 語法
    select * from t1 left join t2 on t1.id = t2.id

  • 結果

id name id age
1 張三 1 18
2 李四 2 20
4 王五 null null

2.2 右外連接

兩表關聯,右表全部保留,左表關聯不上用null表示。

  • 示意圖

在這裏插入圖片描述

  • 語法

       select * from t1 right join t2 on t1.id = t2.id

  • 結果
id name id age
1 張三 1 18
2 李四 2 20
null null 3 19


2.3 全連接:full join


兩表關聯,兩表的內容均保留,沒有關聯的字段用null表示。

  • 示意圖

在這裏插入圖片描述

  • 語法

oracle裏面有full join,但是在mysql中沒有full join。我們可以使用union來達到目的。
(1)oracle
select * from t1 full join t2 on t1.id = t2.id
(2)mysql
select * from t1 left join t2 on t1.id = t2.id
union
select * from t1 right join t2 on t1.id = t2.id;

結果

id name id age
1 張三 1 18
2 李四 2 20
4 王五 null null
null null 3 19


3. 內連接:inner join

兩表關聯,保留兩表中交集的記錄。

  • 示意圖

在這裏插入圖片描述

  • 語法

select * from t1 inner join t2 on t1.id = t2.id;

  • 結果
id name id age
1 張三 1 18
2 李四 2 20


4. 更多的連接方式

4.1 左表獨有


兩表關聯,查詢左表獨有的數據,類似於集合中的t1 - t2。

  • 示意圖

在這裏插入圖片描述

  • 語法

       select * from t1 left join t2 on t1.id = t2.id where t2.id is null;

  • 結果
id name id age
4 王五 null null


4.2 右表獨有

兩表關聯,查詢右表獨有的數據,類似於集合中的t2 - t1。

  • 示意圖

在這裏插入圖片描述

  • 語法

      select * from t1 left join t2 on t1.id = t2.id where t1.id is null;

  • 結果
id name id age
null null 3 19


4.3 並集去交集


兩表關聯,取並集然後去交集。

  • 示意圖

在這裏插入圖片描述

  • 語法

select * from t1 left join t2 on t1.id = t2.id where t2.id is null
union
select * from t1 right join t2 on t1.id = t2.id where t1.id is null;

  • 輸出
id name id age
4 王五 null null
null null 3 19

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章