oracle 資料庫 多表查詢

2021-08-13 22:01:38 字數 928 閱讀 4783

這裡以oracle 自帶的表為例項;

1.等值連線  --查詢員工資訊:員工號 姓名 月薪 部門名稱;

select e.empno,e.ename,e.sal,d.dnamefrom emp e,dept d where e.deptno=d.deptno; e ,d 分別 值兩個表的別名,等值條件 為 deptno;

2.不等值連線  --查詢員工資訊:員工號 姓名 月薪  工資級別;

select e.empno,e.ename,e.sal,s.grade from emp e,salgrade s  where e.sal between s.losal and s.hisal;

select d.deptno 部門號,d.dname 部門名稱,count(e.empno) 人數  from emp e,dept d  where e.deptno=d.deptno group by d.deptno,d.dname;

4.左外連線:當where e.deptno=d.deptno不成立的時候,等號左邊的表任然被包含在最後的結果中

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

5.右外連線:當where e.deptno=d.deptno不成立的時候,等號右邊的表任然被包含在最後的結果中

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

select d.deptno 部門號,d.dname 部門名稱,count(e.empno) 人數

from emp e,dept d

where e.deptno(+)=d.deptno

group by d.deptno,d.dname;

6.自連線 ,可以通過表的列名,將一張表視為多張表;

select e.ename 員工姓名,b.ename 老闆姓名 from emp e,emp b  where e.mgr=b.empno;

《oracle資料庫》多表查詢

笛卡爾集會在以下條件下產生 省略連線條件 連線條件無效 所有表中的所有行互相連線 為了避免笛卡爾集,可以在 where 加入有效的連線條件。select count employee id from employees 假設輸出107行 select count department id from...

oracle資料庫之多表查詢

select s.stuid,s.stuname,s.stuage,s.gender,cl.classesname from student s,classes cl where s.classesid cl.classesid select s.stuid,s.stuname,s.stuage,s...

Oracle資料庫學習多表查詢

此查詢設計到兩個表,其中兩個表中都有相同的列department id 此次查詢出現了笛卡兒積的錯誤,出現原因為1.省略連線條件2.連線條件無效3.所有表中的所有行相互連線 所以為了避免笛卡兒積,要在聯表查詢的時候在where後加有效的連線條件 這種方式為內連線的等值連線,如果涉及到n張表的查詢那麼...