【MySQL數據庫】圖說MySQL的幾種join連接

【MySQL數據庫】圖說MySQL的幾種join連接

MySQL聯表查詢可以說是使用MySQL必須面對的問題,而且在實際的工作中,使用比較多的查詢大概也是聯表查詢。雖然,經常使用聯表查詢,但是你真的清楚其中的機制嗎?

帶著這個問題,下面讓我們進入本文的主題——圖說MySQL的幾種join連接。

基本概念

連接(join)就是將多個表中的字段根據匹配條件進行橫向的拼接。

  • 左表:在語法上位於join左邊的表,叫左表。

  • 右表:在語法上位於join右邊的表,叫右表。

圖說join連接

1、交差連接(cross join)

用左表中的每一行數據去匹配右表中的每一行數據,且認為全部匹配成功。最終的結果集是迪卡爾積。

語法:

select * from 左表 cross join 右表;

示例:【MySQL數據庫】圖說MySQL的幾種join連接

2、內連接(inner join)

使用左表中的每一條記錄去匹配右表的所有的記錄,根據匹配的條件,如果成立,保留整條記錄,如果不成立則丟棄。

用文氏圖表示,則如下:

【MySQL數據庫】圖說MySQL的幾種join連接

語法:

select * from 左表 【inner】 join 右表 【on 條件】

示例:

【MySQL數據庫】圖說MySQL的幾種join連接

3、左連接(left join)

將左表作為主表,用主表中的每一條記錄,去匹配從表(右表)中的所有記錄,根據匹配的條件,如果成功則將主表的記錄中的字段與從表的記錄中的記錄,拼接成一條完整的記錄,放到結果集;如果不成功則將從表中的記錄中的字段全部置為null,保留主表中的字段。

用文氏圖表示,如下:

【MySQL數據庫】圖說MySQL的幾種join連接

語法:

select * from 左表 left join 右表【on條件】

示例:

【MySQL數據庫】圖說MySQL的幾種join連接


4、右連接(right join)

將右表作為主表,用主表中的每一條記錄,匹配從表中的所有記錄,根據匹配的條件,如果成功則將主表的記錄中的字段與從表的記錄中的記錄,拼接成一條完整的記錄,放到結果集。如果不成功則將從表中的記錄中的字段全部置為null,保留主表中的字段。

用文氏圖表示,如下:

【MySQL數據庫】圖說MySQL的幾種join連接

語法:

select * from 左表 right join 右表【on條件】

示例:

【MySQL數據庫】圖說MySQL的幾種join連接

5、自然連接(natural join)

對兩表進行連接查詢時,系統會盲目的用同名字段為匹配條件。會合並同名字段,並且將匹配字段放到結果集的前面。

然自然連接分為左自連接和右自然連接。

  • 直接使用natural join連接主表和從表,相當於內連接

  • 當使用natural left join時,相當於左連接

  • 當使用natural right join時,相當於右連接

自然鏈接(natural join)

語法:

select * from 左表 natural join 右表

示例:

【MySQL數據庫】圖說MySQL的幾種join連接

左自然連接(natural left join)

語法:

select * from 左表 natural left join 右表

示例:

【MySQL數據庫】圖說MySQL的幾種join連接

右自然連接(natural right join)

語法:

select * from 左表 natural right join 右表

示例:

【MySQL數據庫】圖說MySQL的幾種join連接


【MySQL數據庫】圖說MySQL的幾種join連接


分享到:


相關文章: