1.連接運算由兩部分構成:連接類型與連接條件
連接類型可分為
INNER JOIN(等值連接)
LEFT JOIN(左聯接)
RIGHT JOIN (右聯接) 返回包括右表中的所有記錄和左表中聯結字段相等的記錄
連接條件可分為
NATURAL 自然連接(去掉重復屬性)
ON 連接條件(保留重復屬性)
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 只顯示符合條件的記錄