SQL語句之多表連接查詢


1.內連接

select 字段名 from 表1 inner join 表2 on 連接條件   --其中inner可以省略,可拓展到3張表以上

示例:

要求:查詢員工表和部門表中員工的姓名

select sname from employee join department on employee.id = department.id

可以為表提供別名,如

select sname from employee e join department d on e.id = d.id

 

2.自連接

自連接是一種特殊的內連接,它是指相互連接的表在物理上是同一張表,但在邏輯上將其看成兩張表。要讓物理上的一張表在邏輯上成為兩張表,必須通過為表取別名的方式實現。

示例:

要求:查詢與張三在同一個系學習的學生的姓名和所在系,結果中不包括張三。

select s2.name,s2.dept from student s1 join student s2

on s1.dept = s2.dept           --是同一系的學生

where s1.name = '張三'       --s1表作為查詢條件表

and s2.name != '張三'          --s2表作為結果表,並從中去掉 '張三'

要求:查詢與“操作系統”學分相同的課程名和學分

select c1.name,c1.credit from course c1 join course s2

on c1.credit = c2.credit                  --學分相同

where c2.name = '操作系統'          --c2作為查詢條件表

 

3.外連接

在內連接中,只有滿足連接條件的元組才能作為結果輸出,但有時我們希望輸出那些不滿足連接條件的元組信息,比如查看全部課程的被選修情況,包括有學生選的課程和沒有學生選的課程。如果用內連接實現,則只能找到有學生選的課程,因為內連接的結果首先是要滿足連接條件。

外連接是只限制一張表中的數據必須滿足連接條件,而另一張表中的數據可以不滿足連接條件。

語句:

from 表1 left | right join 表2 on 連接條件

left即為左連接,其含義是限制表2中的數據必須滿足連接條件,而不管表1中的數據是否滿足連接條件;

right即為右連接,其含義是限制表1中的數據必須滿足連接條件,而不管表2中的數據是否滿足連接條件;

簡記:指向哪一個,哪一個就沒有限制。left 左 表1沒有限制,right 右 表2沒有限制。

 


免責聲明!

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



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