快速學習Oracle 多表查詢

2021-10-01 13:18:37 字數 2169 閱讀 8193

1.多表連線基本查詢

使用一張以上的表做查詢就是多表查詢

語法:

select  *|列名.. from 表名 別名,表名 1 別名
範例:查詢員工表和部門表

我們發現產生的記錄數是 56 條,我們還會發現 emp 表是 14 條,dept 表是 4 條,56 正是 emp表和 dept 表的記錄數的乘積,我們稱其為笛卡爾積。

如果多張表進行一起查詢而且每張表的資料很大的話笛卡爾積就會變得非常大,對效能造成影響,想要去掉笛卡爾積我們需要關聯查詢。

在兩張表中我們發現有乙個共同的字段是 depno,depno 就是兩張表的關聯的字段,我們可以使用這個欄位來做限制條件,兩張表的關聯查詢字段一般是其中一張表的主鍵,另一張表的外來鍵。

關聯之後我們發現資料條數是 14 條,不在是 56 條。

多表查詢我們可以為每一張表起乙個別名

範例:查詢出雇員的編號,姓名,部門的編號和名稱,位址

範例:查詢出每個員工的上級領導

分析:emp 表中的 mgr欄位是當前雇員的上級領導的編號,所以該字段對 emp表產生了自身關聯,可以使用 mgr 欄位和 empno 來關聯

範例:在上乙個例子的基礎上查詢該員工的部門名稱

分析:只要在上乙個例子基礎上再加一張表的關聯,使用 deptno 來做關聯字段即可

範例:查詢出每個員工編號,姓名,部門名稱,工資等級和他的上級領導的姓名,工資等級

select e.empno,

e.ename,

decode(s.grade,

1,'一級',

2,'二級',

3,'**',

4,'四級',

5,'五級') grade,

d.dname,

e1.empno,

e1.ename,

decode(s1.grade,

1,'一級',

2,'二級',

3,'**',

4,'四級',

5,'五級') grade

2. 外連線(左右連線)

右連線當我們在做基本連線查詢的時候,查詢出所有的部門下的員工,我們發現編號為 40 的部門下沒有員工,但是要求把該部門也展示出來,我們發現上面的基本查詢是辦不到的

小貼士:使用(+)表示左連線或者右連線,當(+)在左邊表的關聯條件欄位上時是左連線,如果是在右邊表的關聯條件欄位上就是右連線。

範例:查詢出所有員工的上級領導

分析:我們發現使用我們以前的做法發現 king 的上級領導沒有被展示,我們需要使用左右連線把他查詢出來

Oracle 多表查詢

sql 外連線 sql 按部門統計員工人數 部門號 部門名稱 人數 sql select d.deptno,d.dname,count e.empno 2 from dept d,emp e 3 where d.deptno e.deptno 4 group by d.deptno,d.dname ...

Oracle 多表查詢

等值和不等值連線查詢 為了避免笛卡爾集,可以在 where 加入有效的連線條件。oracle 連線多表查詢 在 where 子句中寫入連線條件。在表中有相同列時,在列名之前加上表名字首 select table1.column,table2.column from table1,table2 whe...

oracle 多表查詢

多表查詢 多表查詢,又稱表聯合查詢,即一條sql語句涉及到的表有多張,資料通過特定的連線進行聯合顯示.笛卡爾積 在數學中,兩個集合x和y的笛卡尓積 cartesian product 又稱直積,表示為x y.假設集合a 集合b 則兩個集合的笛卡爾積為。在資料庫中,如果直接查詢倆張表,那麼其查詢結果就...