1. 程式人生 > 其它 >SQL語法(五) 多表聯合查詢

SQL語法(五) 多表聯合查詢

SQL語法(五) 多表聯合查詢

程式猴jwang 2018-09-09 09:00:01 109515 收藏 146
分類專欄: Database 文章標籤: sql語法
版權

Database
專欄收錄該內容
19 篇文章9 訂閱
訂閱專欄
前言
當需要獲取的資料分佈在多張中,考慮使用聯合查詢,本章將學習兩種查詢方式(sql92/sql99)

範例
1.笛卡兒積
將多個表的資料進行一一對應,所得到結果為多表的笛卡爾積。結果的數量為所有表的數量的乘積。

--SQL92方式
--表名以逗號隔開實現多表查詢
--SQL99方式
--使用cross join 關鍵字

2.等值連線篩選&不等值連線篩選(內連線)
--概念:先做表的笛卡爾積,然後篩選,篩選條件為等值篩選。
--注意:條件為欄位的值相同(欄位值條件)來進行篩選,欄位的名字可以不同

--SQL92方式
--where 篩選條件...
--SQL99方式
--使用natural join 表名(自然連線,根據名稱相同欄位進行等值連線)
--使用(inner) join 表名 on 篩選條件... (內連線,根據篩選條件進行等值/不等值連線,inner關鍵字可以省略不寫)
--使用(inner) join 表名 using(欄位名,欄位名,....) (內連線,根據名稱相同欄位進行等值連線,可指定欄位,inner關鍵字可以省略)

3.自連線


4.外連線
(1)左外連線
--SQL92方式
--where子句中在右邊連線欄位後加 (+),顯示左邊對應欄位沒有值的資料
--SQL99方式
--select 內容 from 表名 left (outer) join 表名 on 連線條件 (外連線,outer可以省略不寫)

(2)右外連線
--SQL92方式
--where子句中在左邊連線欄位後加 (+),顯示右邊對應欄位沒有值的資料
--SQL99方式
--select 內容 from 表名 right (outer) join 表名 on 連線條件 (外連線,outer可以省略不寫)

(3)滿外連線
--SQL92方式

--SQL99方式
--select 內容 from 表名 full (outer) join 表名 on 連線條件 (外連線,outer可以省略不寫)

附錄:多表聯合查詢示例(SQL99)
--查詢所有資料
select * from EMP for update;

--笛卡爾積 (1,2,3) (5,6,7)
--SQL92,SQL99(推薦)
--使用 cross join 關鍵字
select * from emp cross join dept;--15*4=60

--等值連線和不等值連線(內連線)
--先做笛卡爾積,然後根據條件進行篩選
--注意:條件為欄位的值相同來進行篩選,欄位的名字可以不同

--等值連線
--自然連線:根據名稱相同欄位進行等值連線
--使用 natural join關鍵字
select * from emp natural join dept;
--名稱欄位不相同
-- 表一 inner join 表二 on 篩選條件
select * from emp e inner join dept t on e.deptno = t.deptno;
--名稱欄位相同也可以使用
-- 表一 inner join 表二 using (欄位名,欄位名...)
select * from emp join dept using (deptno);
--不等值連線
select * from emp e inner join dept t on e.sal between 1000 and 1500;

--自連線
select * from emp a inner join emp b on a.empno = b.mgr;


--外連線

--左外連線
-- 表一 left (outer) join 表二 on 篩選條件
select * from emp e left join dept t on e.deptno = t.deptno;

--右外連線
-- 表一 right (outer) join 表二 on 篩選條件
select * from emp e right join dept t on e.deptno = t.deptno;

--滿外連線
-- 表一 full (outer) join 表二 on 篩選條件
select * from emp e full join dept t on e.deptno = t.deptno;
附錄:操作視訊

SQL語法之多表聯合查詢


————————————————
版權宣告:本文為CSDN博主「程式猴jwang」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/qq_21046965/article/details/82555346