sql數據庫之聯表查詢


表准備:

在網站 https://www.bejson.com/runcode/sql/ 或者 https://www.liaoxuefeng.com/wiki/1177760294764384/1179611432985088

執行下列sql創建表

CREATE TABLE jobs( employee varchar(30), title varchar(30));
CREATE TABLE ranks( title varchar(30), rank varchar(30));
CREATE TABLE salary( rank varchar(30), payment int(11));
insert into jobs values('張三','經理'),('李四','總經理'),('王五','總經理助理');
insert into ranks values('經理','三'),('總經理','一'),('總經理助理','二'),('董事長','零');
insert into salary values('一',20000),('二',8000),('三',7000),('四',7000);

這次我們用到3張表:

jobs 表:

 ranks 表:

 salary 表:

 

一、 內連接——Inner Join

內連接Inner join基於連接謂詞將兩張表(如A和B)的列組合在一起,產生新的結果表。

 

select ranks.title,ranks.rank,salary.rank,salary.payment from ranks,salary where salary.rank=ranks.rank; 隱式內連接

select * from ranks r inner join salary s on s.rank=r.rank; 顯式內連接

查詢結果如下:

r!title r!rank s!rank s!payment
經理 7000
總經理 20000
總經理助理 8000

二、左外連接(left outer join,outer可省略)

左表全部出現在結果集中,若右表無對應記錄,則相應字段為NULL

 

select * from ranks r left join salary s on r.rank=s.rank;

結果如下:

r!title r!rank s!rank s!payment
經理 7000
總經理 20000
總經理助理 8000
董事長 NULL NULL
select * from ranks r left join salary s on r.rank=s.rank where s.rank is null;

結果如下:

r!title r!rank s!rank s!payment
董事長 NULL NULL

三、右外連接(right outer join,outer可省略)

右表全部出現在結果集中,若左表無對應記錄,則相應字段為NULL

select * from ranks r right join salary s on r.rank=s.rank;

 

 結果如下:

 
r!title r!rank s!rank s!payment
經理 7000
總經理 20000
總經理助理 8000
NULL NULL 7000
select * from ranks r right join salary s on r.rank=s.rank where r.rank is null;

結果如下:

r!title r!rank s!rank s!payment
NULL NULL 7000

四、全外連接(full outer join)

全外連接=左外連接+右外連接

 

select * from ranks r full outer join salary s on r.rank=s.rank;

結果如下:

r!title r!rank s!rank s!payment
經理 7000
總經理 20000
總經理助理 8000
董事長 NULL NULL
NULL NULL 7000
select * from ranks r full outer join salary s on r.rank=s.rank where r.rank is null or s.rank is null;

結果如下:

r!title r!rank s!rank s!payment
董事長 NULL NULL
NULL NULL 7000

 


免責聲明!

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



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