Oracle数据库之多表查询
oracle安裝參照: Oracle數據庫之安裝教程
Oracle數據庫總結:
Oracle數據庫之基本查詢
Oracle數據庫之單行函數
Oracle數據庫之多行函數
Oracle數據庫之多表查詢
SQL> --等值連接
SQL> --查詢員工信息:員工號 姓名 月薪 部門名稱
SQL> select e.empno,e.ename,e.sal,d.dname
2 from emp e,dept d
3 where e.deptno=d.deptno;
SQL> --不等值連接
SQL> --查詢員工信息:員工號 姓名 月薪 工資級別
SQL> select * from salgrade;
1 700 1200 2 1201 1400 3 1401 2000 4 2001 3000 5 3001 9999***
SQL> select e.empno,e.ename,e.sal,s.grade
2 from emp e,salgrade s
3 where e.sal between s.losal and s.hisal;
7369 SMITH 800 1 7900 JAMES 950 1 7876 ADAMS 1100 1 7521 WARD 1250 2 7654 MARTIN 1250 2 7934 MILLER 1300 2 7844 TURNER 1500 3 7499 ALLEN 1600 3 7782 CLARK 2450 4 7698 BLAKE 2850 4 7566 JONES 2975 4 EMPNO ENAME SAL GRADE
7788 SCOTT 3000 4 7902 FORD 3000 4 7839 KING 5000 5***
SQL> --外連接
SQL> --按部門統計員工人數:部門號 部門名稱 人數
SQL> select d.deptno 部門號,d.dname 部門名稱,count(e.empno) 人數
2 from emp e,dept d
3 where e.deptno=d.deptno
4 group by d.deptno,d.dname;
10 ACCOUNTING 3 20 RESEARCH 5 30 SALES 6
SQL> select * from dept;
DEPTNO DNAME LOC
10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON***
SQL> /
SQL> 外連接:某些不成立的記錄,通過外連接依然可以包含在最后的結果中
SQL> 左外連接:當where e.deptno=d.deptno不成立的時候,等號左邊的表任然包含在最后的結果中
SQL> 寫法:where e.deptno=d.deptno(+)
SQL> 右外連接:當where e.deptno=d.deptno不成立的時候,等號右邊的表任然包含在最后的結果中
SQL> 寫法: where e.deptno(+)=d.deptno
SQL> /
SQL> select d.deptno 部門號,d.dname 部門名稱,count(e.empno) 人數
2 from emp e,dept d
3 where e.deptno(+)=d.deptno
4 group by d.deptno,d.dname;
SQL> --自連接
SQL> --查詢員工信息: 員工的名字 老板的名字
SQL> --自連接:通過表的別名,將同一張表視為多張表
SQL> select e.ename 員工的名字,b.ename 老板名字
2 from emp e,emp b
3 where e.mgr=b.empno;
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數據庫總結:
Oracle數據庫之集合運算
Oracle數據庫之數據處理
Oracle數據庫之建表和管理表
Oracle數據庫之對象視圖、索引、序列、同義詞
總結
以上是生活随笔為你收集整理的Oracle数据库之多表查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle数据库之多行函数
- 下一篇: Oracle数据库之安装教程