多表查詢

多個表關聯查詢需要依據多表之間列關係將其連接起來,這種連接方式分爲三種:內連接(inner join)、外連接(outer join)及交叉連接(cross join)。

內連接(inner join):

如果依據多個表之間列關係進行內連接,查詢結果集僅包括滿足連接條件的數據行。內連接分爲等值連接、不等值連接以及自然連接,其中等值連接最爲常見。

等值連接:在連接條件中使用等號(=)運算符比較被連接列的列值是否相等,分顯式等值連接和隱式等值連接:

1、顯式等值連接:            

  select ui.*,addr.* from user_info ui [inner] join address addr on ui.id = addr.user_id;

2、隱式等值連接:

select ui.*,addr.* from user_info ui,address addr where ui.id = addr.user_id;              

上面SQL語句執行結果:

外連接(outer join) :

如果依據多表之間列關係進行外連接,查詢結果集不僅僅包括滿足on連接條件的數據行,還包括不滿足on連接條件的數據行。

左外連接(left [outer] join):返回的結果集中不僅包含表之間滿足on連接條件的全部數據行,還包含左表(“left [outer] join”關鍵字左邊的表)不滿足on連接條件的數據行;        select ui.*,addr.* from user_info ui left join address addr on ui.id = addr.user_id;

右外連接(right [outer] join):返回的結果集中不僅包含表之間滿足on連接條件的全部數據行,還包含右表(即“right [outer] join”關鍵字右邊的表)不滿足on連接條件的數據行;        select ui.*,addr.* from user_info ui right join address addr on ui.id = addr.user_id;

 

 

全外連接(full [outer] join):返回的結果集中不僅包含表之間滿足on連接條件的全部數據行,還包含左表(“full [outer] join”關鍵字左邊的表)和右表(“full [outer join”關鍵字右邊的表)中不滿足on連接條件的數據行;        select ui.*,addr.* from user_info ui full join address addr on ui.id = addr.user_id;

 

 

交叉連接(cross join)(瞭解)

左表(“cross join”關鍵字左邊的表)中的每一行與右表(“cross join”關鍵字右邊的表)中的所有行組合,交叉聯接的結果是一個笛卡爾積。        select ui.*,addr.* from user_info ui cross join address addr;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章