SQL表連接查詢(inner join、full join、left join、right join)
前提條件:假設有兩個表,一個是學生表,一個是學生成績表。
表的數據有:
一、內連接-inner jion :
最常見的連接查詢可能是這樣,查出學生的名字和成績:
select s.name,m.mark from student s,mark m where s.id=m.studentid
上面就是我們最常見的inner join,即內連接,把符合student.id=mark.studentid 條件的元組才選出來,也可以寫成:
select s.name,m.mark from student s inner join mark m on s.id=m.studentid
符合條件的只有兩條結果,查出結果爲:
二、左連接-left join:
左連接是把左邊的表的元組全部選出來:
select s.name,m.mark from student s left join mark m on s.id=m.studentid
上面語句就是把左邊的表,即student表中的元組全部選出,儘管有些分數表是沒數據的,也選了出來,選出的結果爲:
三、右連接-right join:
右連接就是把右邊表的數據全部取出,不管左邊的表是否有匹配的數據:
select s.name,m.mark from student s right join mark m on s.id=m.studentid
上面的語句就是把mark分數表的數據全部取出來,不管student表中是否有數據匹配,如下圖所示:
四、全連接-full join:
把左右兩個表的數據都取出來,不管是否匹配:
select s.name,m.mark from student s full join mark m on s.id=m.studentid
如下圖所示,學生表和成績表的數據都取了出來: