sql資料庫表連接,主要分為:內連接、外連接(左連接、右連接 、全連接)、交叉連接,今天統一整合一下,看看他們的區別。 首先建表填充值。 學生表:student(id,姓名,年齡,性別 ) 成績表:score(id,學生id,成績) 一、內連接(inner join……on) select stud ...
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行記錄。