資料庫內外聯接查詢語句
阿新 • • 發佈:2018-12-10
建立如下表並插入資料:
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; 查詢結果: