Oracle 多表查詢

2021-06-16 13:24:44 字數 1031 閱讀 7584

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;---> 結果是不符合要求的

外連線解決的問題:當條件不成立時,任然希望在結果中包含不成立的記錄

左外連線: where d.deptno=e.deptno 當不成立時,等號左邊代表的表的資訊任然被包含

寫法: where d.deptno=e.deptno(+)

右外連線: where d.deptno=e.deptno 當不成立時,等號右邊代表的表的資訊任然被包含

寫法:where d.deptno(+)=e.deptno

sql> 1  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

5  order by 1

--自連線:利用表的別名,將同一張表視為多張表 --自連線不太適合操作大表

sql> --查詢員工資訊:***的老闆是***

sql> select e.ename||'的老闆是'||b.ename

2  from emp e,emp b

3  where e.mgr=b.empno;

sql> --層次查詢---適合操作大表

sql> --層次查詢:  對同一張表的前後兩次操作,進行連線

sql> select level,empno,ename,mgr

2  from emp

3  connect by prior empno=mgr

4  start with mgr is null

5  order by 1;

Oracle 多表查詢

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

oracle 多表查詢

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

oracle多表查詢

分頁查詢 oracle的表中都有兩個偽列,可用於指定行號 1 rownum 會根據查詢到的行記錄的改變而改變.如,smith行在第一行那麼rownum就是1,smith行在第4行,那麼rownum就是4.2 rowid 固定行號,不會根據查詢到的行記錄的改變而改變。如,smith行在第一行rowid...