1. 程式人生 > >資料庫內外聯接查詢語句

資料庫內外聯接查詢語句

建立如下表並插入資料:

create table s(
 sid varchar2(10) primary key,
 sname varchar2(50),
 sage number(30));
 insert into s values('111','小紅',20);
 insert into s values('222','小紅',20);
 insert into s values('333','小紅',20);
 insert into s values('555','小紅',20);

 create table c(
 cid varchar2(10) primary key,
 sid varchar2(10
), sscore number(3));
insert into c values('c1','111',20); insert into c values('c2','222',20); insert into c values('c3','333',20); insert into c values('c4','444',20);

聯接查詢會有兩組資料,一組資料對應一個表

外聯接

1.左外聯

左外聯會查出左邊表的全部資料,而右表只有和左邊表關聯的欄位相等時( a.sid=b.sid),對應的記錄才會顯示,否則為空。

有兩種寫法: ①select * from s a left join c b on a.sid=b.sid; 左邊的表中的記錄全部顯示 ②select * from s a,c b where a.sid=b.sid(+); “+”號的另一邊的表中的記錄全部顯示 查詢結果: 這裡寫圖片描述

2.右外聯

右外聯剛好和左外聯相反,右外聯會查出右邊表的全部資料,而左表只有和右邊表關聯的欄位相等時( a.sid=b.sid),對應的記錄才會顯示,否則為空。

有兩種寫法: ①select * from s a right join c b on a.sid=b.sid; ②select * from s a,c b where a.sid(+)=b.sid; 查詢結果: 這裡寫圖片描述

3.全外聯

全外聯兩個表的所有記錄(去除重複)都顯示

SQL語句: select * from s a full join c b on a.sid=b.sid; 查詢結果: 這裡寫圖片描述

內聯接

內聯接兩張表都只顯示滿足條件(a.sid=b.sid)的記錄

SQL語句: select * from s a inner join c b on a.sid=b.sid; 查詢結果: 這裡寫圖片描述