什么是子查詢


當一個查詢結果是另一個查詢的條件的時候,那么就稱為子查詢,子查詢是在SQL語句內的另外一條SELECT語句。

在SELECT、INSERT、UPDATE或DELETE命令中只要是表達式的地方都可以包含子查詢,子查詢甚至可以包含在另外一個子查詢中,以便完成更為復雜的查詢。下面通過一個實例來了解一下子查詢。

 

實例 查詢部門名稱為RESEARCH的員工信息

在員工表emp中查詢部門名稱(dname)為RESEARCH的員工信息,具體代碼如下。

01     SELECT empno,ename,jobFROM emp 02     WHERE deptno=(SELECT deptno FROM dept 03     WHERE dname='RESEARCH');

通過SQL Developer輸入,查詢結果如圖7.1所示。

圖7.1  顯示部門名稱為RESEARCH的員工信息

因為題目要求查詢的是部門名稱為RESEARCH的員工信息,但是在員工表emp中並沒有部門名稱(dname)字段,只有部門編號(deptno)字段,那么只要知道部門名稱為RESEARCH的編號就可以了,這個要求很簡單,可以通過部門表dept來查詢,代碼如下。

01  select deptno from dept 02  where dname='RESEARCH'

 

查詢結果如圖7.2所示,通過此語句就可以得到部門編號,為20。

 

圖7.2  部門名稱為RESEARCH的部門編號

現在題目可以簡化為查詢部門編號為20的員工信息,那么代碼如下。

01  select empno,ename,jobfrom emp 02  where deptno=20;

 

查詢結果如圖7.1所示。

如果把這兩條查詢語句連起來,就構成了子查詢。如要注意的是,內層查詢稱為子查詢,外層查詢稱為外查詢,如圖7.3所示。

  

圖7.3  子查詢和外查詢

說明:本實例的需求也可以通過多表關聯查詢來實現,即可以使用如下代碼來替換上面的代碼。將下面的代碼和實例01中的代碼進行對比,可以看出,相比多表關聯查詢,子查詢的使用更加靈活、功能更強大,而且更容易理解。

01  select empno,ename,job 02  from emp join dept on emp.deptno=dept.deptno 03  wheredept.dname = 'RESEARCH'; 

 

本文摘自明日科技出版的《零基礎學Oracle》,轉載請注明出處!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM