mysql筆記(7)-多表查詢之自然連接、外連接


本文將簡單介紹多表查詢的幾種類型,包括關鍵字natural join、outer join等

一、自然連接

當我們在from從句中,用逗號連接不同表,且沒有添加where子句時
這樣的多表連接被稱為是笛卡爾積
在大部分情況下,多表之間的笛卡爾積是沒有意義的
因此,我們可以通過添加where子句來實現自然連接

下圖是instructor表和teaches表的結構
7-1.png
例如,我們想找出有教課的教師名字及其對應的課程ID
就可以在where子句中利用.操作符連接一個(或多個)公共屬性
從而實現我們需要的自然連接

select name, course_id
from instructor, teaches
where instructor.ID=teaches.ID;

而在from子句中使用關鍵字natural join來連接兩個表
同樣能實現自然連接的效果

select name,course_id
from instructor natural join teaches;  

在更復雜的多表查詢中,使用關鍵字natural join可能會出現不可預知的錯誤
因此,我們更推薦在where子句中用.操作符連接公共屬性,從而實現自然連接的效果

二、外連接

外連接的類型有兩種,分別是左外連接、右外連接

1、左外連接

用關鍵字 natural left outer join 來表示左外連接
對於 table1 natural left outer join table2 而言
返回的新表將會以table1的主碼作為主碼,並保留table1的所有數據
例如:
對 課程信息表和先修課程信息表
即 course(course_id(主碼),title,dept_name,credits) 和
prereq(course_id,prereq_id(兩個屬性都是主碼)) 進行左外連接
效果如下:
7-2.png

2、右外連接

用關鍵字 natural right outer join 來表示右外連接
對於 table1 natural right outer join table2 而言
返回的新表將會以table2的主碼作為主碼 ,並保留table2的所有數據
例如:
對 課程信息表和先修課程表 進行右外連接
效果如下:
7-3.png


免責聲明!

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



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