原創:oracle 子查詢介紹
前幾節課中我們漸漸的對oracle的知識,有了進一步的瞭解與掌握,隨著時間的推移,在這節課程中我們來講解SQL子查詢的知識,希望通過授課中的內容對你有所幫助!
子查詢概念 :當一個查詢的結果是另一個查詢的條件時,稱之為子查詢。
使用子查詢注意事項:
子查詢可以巢狀多層
子查詢需要圓括號()括起來
子查詢語法:
SELECT select_list
FROM table
WHERE expr operator
(SELECT select_list
FROM table);
子查詢 (內查詢) 在主查詢之前一次執行完成。
子查詢的結果被主查詢使用 (外查詢)。
舉例:查詢員工的工資大於JONES的員工資訊
分析過程如下:
首先:查詢JONES的員工工資是多少 :結果2975
SQL> select sal from emp where ename='JONES';
實際上我們要查詢的是:薪資大於2975的員工的資訊寫法如下:
SQL> select * from emp where sal>2975;
//綜合以上寫出子查詢的結果如下:
SQL> select * from emp where sal>(select sal from emp where ename='JONES');
注意:
子查詢要包含在括號內。
將子查詢放在比較條件的右側。
根據查詢的結果(內部巢狀查詢的結果)把子查詢的型別分為單行子查詢與多行子查詢,
注意:
單行操作符對應單行子查詢,多行操作符對應多行子查詢。
單行操作符
>、>=、 <、 <= 、<>、=
舉例:
//查詢編號7876相同職位的員工資訊 並且薪資大於編號為7521的薪資的員工資訊
SQL> select * from emp where job=( select job from emp where empno=7876) and sal>( select sal from emp where empno=7521);
//子查詢含有組函式
SQL> select * from emp where sal>(select avg(nvl(sal,0)) from emp);
//子查詢含有having子句 查詢部門的最小工資大於20號部門最小工資的部門號及最小工資數
SQL> select deptno,min(sal) from emp group by deptno having min(sal)>( select min(sal) from emp where deptno=20);
備註:子查詢可以返回空行 沒要查詢到結果是可以的。
多行子查詢
返回多行。
使用多行比較操作符。
操作符如下圖:
操作符 描述
In 等於列表中的任何一個
Any 子查詢返回的任意一個值比較 相同還有some
All 和子查詢返回的所有值比較
Exists
//查詢薪水小於工作崗位CLERK的任何一個薪資的員工資訊 並且不包含工作崗位為CLERK的員工資訊
SQL> select * from emp where sal < any (select sal from emp where job='CLERK') and job<>'CLERK';
//all與所有值比較 >all 代表的是大於查詢結果的最大值
SQL> select * from emp where sal > all (select sal from emp where job='CLERK') and job<>'CLERK';
//查詢崗位與部門編號為10相同的員工資訊 不包含自己。
SQL> select * from emp where job in(select job from emp where deptno=10) and deptno<>10;
只做思考?
SQL> select * from emp where exists(select * from dept);
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH CLERK 7902 1980-12-17 800.00 20
7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 30
7521 WARD SALESMAN 7698 1981-2-22 1250.00 500.00 30
…..
SQL> select * from emp where exists(select * from dept where deptno=80);
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
以上內容版權歸redarmy_chen所有,如需轉載請附帶出處,如有疑問請傳送郵件至redarmy_chen@qq.com
相關文章
- 「Oracle」Oracle高階查詢介紹Oracle
- 原創:oracle聚合函式介紹Oracle函式
- 原創:oracle DML介紹與使用Oracle
- oracle子查詢Oracle
- [原創]SOAPUI工具介紹UI
- [原創]WebScarab工具介紹Web
- [原創]Java靜態程式碼檢查工具介紹Java
- Oracle with重用子查詢Oracle
- oracle with 子查詢用法Oracle
- 子查詢-表子查詢
- Oracle查詢轉換(五)子查詢展開Oracle
- Oracle OCP(08):使用子查詢Oracle
- Oracle_Day2 子查詢Oracle
- Django-ORM---查詢集介紹DjangoORM
- 原創:springIOC介紹第二講Spring
- Sql介紹 與 Sql基礎查詢SQL
- [原創]zabbix工具介紹,安裝及使用
- 如何調優 Oracle SQL系列文章:查詢優化器介紹OracleSQL優化
- 複雜查詢—子查詢
- 【原創】查詢原始MySQL死鎖ID薦MySql
- MySQL執行狀況查詢方式介紹MySql
- HTTP狀態碼查詢簡單介紹HTTP
- ORACLE_OCP之SQL_子查詢OracleSQL
- 15、Oracle中的高階子查詢Oracle
- SQL查詢的:子查詢和多表查詢SQL
- 原創:spring入門介紹第一講Spring
- 原創:ServletContext應用介紹總結ServletContext
- [原創]敏捷開發管理工具介紹敏捷
- [原創]SpotLight效能監控工具使用介紹
- [原創]Fitnesse測試工具介紹及安裝
- 原創圖書流程介紹:寫作階段
- 原創圖書流程介紹:選題階段
- 相關子查詢&非相關子查詢概念
- 從根上理解elasticsearch(lucene)查詢原理(1)-lucece查詢邏輯介紹Elasticsearch
- MySQL子查詢MySql
- 子串查詢
- 使用子查詢
- MYsql 子查詢MySql