1.鏈接運算由兩部分構成:鏈接類型與鏈接條件sql
鏈接類型可分爲測試
INNER JOIN(等值鏈接)spa
LEFT JOIN(左聯接) 基礎
RIGHT JOIN (右聯接) 返回包括右表中的全部記錄和左表中聯結字段相等的記錄select
鏈接條件可分爲sql語句
NATURAL 天然鏈接(去掉重複屬性)搜索
ON 鏈接條件(保留重複屬性)join
USING 屬性名1,屬性名2… (保留指定重複屬性)實例
2.操做實例
表A記錄以下:
aID aNum
1 a2016001
2 a2016002
3 a2016003
4 a2016004
5 a2016005
bID bName
1 bmumu001
2 bmumu002
3 bmumu003
4 bmumu004
6 bmumu006
測試以下:
1.left join
sql語句以下:
select * from A left join B on a.aID=b.bID
結果以下:
aID aNum bID bNAME
1 a2016001 1 bmumu001
2 a2016002 2 bmumu002
3 a2016003 3 bmumu003
4 a2016004 4 bmumu004
5 a2016005 NULL NULL
結果說明:
left join 是以A表的記錄爲基礎的,A能夠當作左表,B能夠當作右表,left join 是以左表爲準的.換句話說,左表(A)的記錄將會所有顯示出來,
而右表(B)只會顯示符合搜索條件的記錄(a.aID=b.bID),B表記錄不足的地方均爲NULL
2.right join
sql語句以下:
select * from A right join B on a.aID=b.bID
結果以下:
aID aNum bID bNAME
1 a2016001 1 bmumu001
2 a2016002 2 bmumu002
3 a2016003 3 bmumu003
4 a2016004 4 bmumu004
NULL NULL 6 bmumu006
結果說明:
仔細觀察一下,就會發現和left join的結果剛剛相反, right join 是以B表的記錄爲基礎的,A表記錄不足的地方用NULL填充
3.inner join
sql語句以下:
select * from A inner join B on a.aID=b.bID
結果以下:
aID aNum bID bNAME
1 a2016001 1 bmumu001
2 a2016002 2 bmumu002
3 a2016003 3 bmumu003
4 a2016004 4 bmumu004
結果說明:
很明顯,inner join 只顯示了 a.aID=b.bID的記錄,這說明inner join 只顯示符合條件的記錄