1. 程式人生 > >資料庫中內連線、外連線、左連線、右連線、全連線、交叉連線的區別

資料庫中內連線、外連線、左連線、右連線、全連線、交叉連線的區別

內連線:

內聯接使用比較運算子根據每個表共有的列的值匹配兩個表中的行。利用內連線可獲取兩表的公共部分的記錄。

又細分為三種:

等值連線:

在連線條件中使用等於號(=)運算子比較被連線列的列值,其查詢結果中列出被連線表中的所有列,包括其中的重複列。

不等值連線:

在連線條件使用除等於運算子以外的其它比較運算子比較被連線的列的列值。這些運算子包括>、>=、<=、<、!>、!<和<>。

自然連線:

在連線條件中使用等於(=)運算子比較被連線列的列值,但它使用選擇列表指出查詢結果集合中所包括的列,並刪除連線表中的重複列。

外連線:

外連結(outer join)與內連線是相反的,就是說,如果某張表中的資料在另一張中找不到對應的條目並不影響它依然出現在查詢的結果中,這對於兩張表都是滿足的,兩邊都有出現null的可能,有點像數學中的並集。

左(外)連線:

左連線(left join)即為兩張表進行連線時,是以處於left join語句左側的表為基準去匹配left join語句右邊的表,如果左表中的一條資料在右表中能找到與之對應的一條資料,那麼就會出現在以虛表形式存在的結果表中,如果沒有找到,那麼會以null來代替右表中的資料去匹配左表。左連線時左邊的表是全部資料,右邊的只有符合條件的才有資料。

右(外)連線:

右連線(right join)本質上是相當於將上述的左連線的這個過程反過來,以連線語句right join右側的表為基準去匹配左邊的表,右連線是處於right join右邊的表是全部資料,左邊的符合條件的有資料。

全(外)連線:

全連線(full join)完整外部聯接返回左表和右表中的所有行。當某行在另一個表中沒有匹配行時,則另一個表的選擇列表列包含空值。如果表之間有匹配行,則整個結果集行包含基表的資料值。   

注意:

MySQL中沒有全(外)連線。

交叉連線:

左表中的每一行與右表中的所有行組合。交叉聯接也稱作笛卡爾積。