數據中的鏈接join分爲內鏈接、天然鏈接、外鏈接,外鏈接又分爲左外鏈接、右外鏈接、全外鏈接。
固然,這些分類都是在鏈接的基礎上,是從兩個表中記錄的笛卡爾積中選取知足鏈接的記錄。笛卡爾積簡單的說就是一個表裏的記錄要分別和另一個表的記錄匹配爲一條記錄,即若是表A有3條記錄,表B也有三條記錄,通過笛卡爾運算以後就應該有3*3即9條記錄。以下表:
天然鏈接(natural join)
天然鏈接是一種特殊的等值鏈接,他要求兩個關係表中進行比較的必須是相同的屬性列,無須添加鏈接條件,而且在結果中消除重複的屬性列。
sql語句:Select …… from 表1 natural join 表2
結果:
內鏈接(inner join)
內鏈接基本與天然鏈接相同,不一樣之處在於天然鏈接要求是同名屬性列的比較,而內鏈接則不要求兩屬性列同名,能夠用using或on來指定某兩列字段相同的鏈接條件。
sql語句:Select …… from 表1 inner join 表 2 on 表1.A=表2.E
結果:
天然鏈接時某些屬性值不一樣則會致使這些元組會被捨棄,那如何保存這些會被丟失的信息呢,外鏈接就解決了相應的問題。外鏈接分爲左外鏈接、右外鏈接、全外鏈接。外鏈接必須用using或on指定鏈接條件。
左外鏈接(left outer join)
左外鏈接是在兩表進行天然鏈接,只把左表要捨棄的保留在結果集中,右表對應的列上填null。
sql語句:Select …… from 表1 left outer join 表2 on 表1.C=表2.C
結果:
右外鏈接(rignt outer join)
右外鏈接是在兩表進行天然鏈接,只把右表要捨棄的保留在結果集中,左表對應的列上填null。
Select …… from 表1 rignt outer join 表2 on 表1.C=表2.C
結果:
全外鏈接(full join)
全外鏈接是在兩表進行天然鏈接,只把左表和右表要捨棄的都保留在結果集中,相對應的列上填null。
Select …… from 表1 full join 表2 on 表1.C=表2.C
結果:sql