數據庫入門速成---ORACLE (02) 關聯查詢與分類彙總查詢

一、表間關聯基礎

1.關聯的實現

一個表的外鍵(FK)與另一個表的主鍵(PK)相對應

2.從表(子表)

外鍵所在表

3.主表(父表)

主鍵所在表

4.主鍵表達一方,外鍵表達多方

二、關聯查詢

1.概念:

從多個表查詢數據

2.關聯查詢分類:

2.1 內關聯(inner join)
2.2 外關聯(outer join)
2.3 交差關聯(cross join)
2.4 自關聯(self join)

3.關聯實現方式:

3.1 oracle專用方式
3.2 ANSI標準方式(有利於移植)
3.3 自然方式

三、內關聯查詢

【應用最廣】

1.Inner join :

 要求 PK 所指的 FK 有記錄

2.實現方式

2.1 oracle方式:

select *
from tablea, tableb
where --條件
PS:關聯時,重複的列必須指明
PS:N個表關聯需要有N-1個關聯條件
例子:
select dept.deptno, empno
from emp, dept
where emp.deptno = dept.deptno

2.2 標準方式:

select ...
from table1 [inner] join table2
on table1.columns = table2.columns
PS:這兩種方式,字段可以不同

2.3 使用using關聯

select ...
from table1 [inner] join table2
using columns
PS:要求關聯字段必須用一樣

2.4 使用自然連接

只能用於內聯

select ...
from table1 natural join table2


四、外關聯查詢

1. Outer join:

查詢某一張表的所有記錄
另一張表對應的記錄有無均可

2.左外關聯查詢

查詢左表所有記錄

2.1 oracle方式

select ...
from tableleft, tableright
where tableleft.columns = tableright.columns(+)

2.2 標準SQL

select ... 
from tableleft left outer join tableright
on tableleft.columns = tableright.columns

2.3 一樣字段可以使用using

3.右關聯查詢

查詢右表所有記錄

3.1 oracle方式

select ...
from tableleft, tableright
where tableleft.columns(+) = tableright.columns

3.2 標準SQL

select ...
from tableleft right [outer] join tableright
on tableleft.columns = tableright.columns

3.3 使用using

4.全外聯查詢

查詢左右表所有記錄
有對應顯示字段值,無對應顯示null

4.1 oracle 

4.2 標準SQL

select ...
from tableleft full outer join tableright
on tableleft.columns = tableright.columns


五、交差聯接

1.cross join:

兩張表所有記錄,交差連接
(沒有意義,儘量避免)

2.實現方式

2.1 oracle 方式

select ...
from tableleft, tableright
-- 無條件

2.2 標準SQL

select ...
from tableleft cross join tableright


六、自關聯

1.self join:

一張表關聯自己(內聯 && 外聯)

2.實現方式:

select ...
from tablea, tableb

七、彙總查詢

1.彙總函數

1.1 avg(字段) 
求平均值
1.2 sum(字段)
彙總求和
1.3 min(字段)
最小值
1.4 max(字段)
最大值
1.5 count(字段)
記錄個數
PS:特點:忽略null值

2.分類彙總語句

2.1 group by 
用於分類
當select 中包含組函數與單函數時,單函數必須group by 
group by table.columns
2.2 對彙總後記錄進行篩選
where 對源記錄進行篩選
having 對彙總記錄進行再次篩選

表達式中只能有1. group by 項目,2.組函數


發佈了26 篇原創文章 · 獲贊 24 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章