SQL表連接查詢(inner join、full join、left join、right join)


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

如下圖所示,學生表和成績表的數據都取了出來:

 

比較常用的是第一種,內連接,而且是用這種寫法:

select s.name,m.mark from student s,mark m where s.id=m.studentid

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM