sql數據庫的表連接方式圖文詳解


sql數據庫表連接,主要分為:內連接外連接(左連接、右連接 、全連接)、交叉連接,今天統一整合一下,看看他們的區別。

 
首先建表填充值。
學生表:student(id,姓名,年齡,性別 )
成績表:score(id,學生id,成績)
 
一、內連接(inner join……on)
select student.* ,Score.* from student inner join Score on student.id=Score.sid
查詢結果如下:
 
關系如下圖:
 
總結:inner join取兩表的交集。
 
二、外連接
外連接包括 左連接、右連接、全連接  (left|right | full outer join ……on),其中outer可以省略
 
(1)左連接(left join ……on)
select student.* ,Score.* from student left join Score on student.id=Score.sid
查詢結果如下:
關系如下圖:
總結:left join 以左表為准,查詢出左表的所有數據,右表中有對應的則顯示出來,沒有對應的則顯示為null.
注:A left join B on  與  A,B where  有相同效果,如下:
select student.* ,Score.* from student inner join Score on student.id=Score.sid
select student.* ,Score.* from student,Score where student.id=Score.sid
 
 
(2)右連接(right join ……on)
select student.* ,Score.* from student right join Score on student.id=Score.sid
關系如下圖:
總結:right join 以右表為准,查詢出右表的所有數據,左表中有對應的則顯示出來,沒有對應的則顯示為null.
 
(3)全連接(full join ……on)
select student.* ,Score.* from student full join Score on student.id=Score.sid
總結:full join 是為 left和right的集合,某表中某一行在另一表中無匹配行,則相應列的內容為NULL。
 
三、交叉連接(cross join),注意沒有on條件
select student.* ,Score.* from student cross join Score

叉聯接也稱作笛卡爾積。相當於兩個表中的所有行進行排列組合。

若表a有X行,表b有Y行,則將返回XY行記錄。

 
 
 
 
 
 


免責聲明!

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



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