Oracle資料庫子查詢介紹

來源:互聯網
上載者:User

我們漸漸的對Oracle的知識,有了進一步的瞭解與掌握,隨著時間的推移,在這節課程中我們來講解SQL子查詢的知識,希望通過授課中的內容對你有所協助!

  1. 子查詢概念 :當一個查詢的結果是另一個查詢的條件時,稱之為子查詢。   
  2. 使用子查詢注意事項:   
  3.          子查詢可以嵌套多層   
  4.          子查詢需要圓括弧()括起來   
  5. 子查詢文法:   
  6. SELECT  select_list    
  7. FROM    table    
  8. WHERE   expr operator   
  9.             (SELECT select_list    
  10.                FROM     table);   
  11.    子查詢 (內查詢) 在主查詢之前一次執行完成。   
  12.    子查詢的結果被主查詢使用 (外查詢)。   
  13. 舉例:查詢員工的工資大於JONES的員工資訊   
  14. 分析過程如下:   
  15. 首先:查詢JONES的員工工資是多少 :結果2975  
  16. SQL> select sal from emp where ename='JONES';   
  17. 實際上我們要查詢的是:薪資大於2975的員工的資訊寫法如下:   
  18. SQL> select * from emp where sal>2975;   
  19. //綜合以上寫出子查詢的結果如下:   
  20. SQL> select * from emp where sal>(select sal from emp where ename='JONES');   
  21. 注意:   
  22.    子查詢要包含在括弧內。    
  23.    將子查詢放在比較條件的右側。   
  24.   
  25. 根據查詢的結果(內部巢狀查詢的結果)把子查詢的類型分為單行子查詢與多行子查詢,   
  26.    注意:   
  27.    單行操作符對應單行子查詢,多行操作符對應多行子查詢。   
  28. 單行操作符   
  29. >、>=、 <、 <= 、<>、=   
  30. 舉例:   
  31. //查詢編號7876相同職位的員工資訊 並且薪資大於編號為7521的薪資的員工資訊   
  32. SQL> select * from emp where job=( select job from emp where empno=7876) and sal>( select sal from emp where empno=7521);   
  33. //子查詢含有組函數   
  34. SQL> select * from emp where sal>(select avg(nvl(sal,0)) from emp);   
  35. //子查詢含有having子句 查詢部門的最小工資大於20號部門最小工資的部門號及最小工資數   
  36. SQL> select deptno,min(sal) from emp group by deptno having min(sal)>( select min(sal) from emp where deptno=20);   
  37.   
  38. 備忘:子查詢可以返回空行 沒要查詢到結果是可以的。   
  39.   
  40. 多行子查詢   
  41.     返回多行。   
  42.    使用多行比較操作符。   
  43. 操作符如:   
  44. 操作符 描述   
  45. In  等於列表中的任何一個   
  46. Any 子查詢返回的任意一個值比較 相同還有some   
  47. All 和子查詢返回的所有值比較     
  48. Exists     
  49.   
  50. //查詢薪水小於工作崗位CLERK的任何一個薪資的員工資訊 並且不包含工作崗位為CLERK的員工資訊   
  51. SQL> select * from emp where sal < any (select sal from emp where job='CLERK') and job<>'CLERK';   
  52. //all與所有值比較 >all 代表的是大於查詢結果的最大值   
  53. SQL> select * from emp where sal > all (select sal from emp where job='CLERK') and job<>'CLERK';   
  54. //查詢崗位與部門編號為10相同的員工資訊 不包含自己。   
  55. SQL> select * from emp where job in(select job from emp where deptno=10) and deptno<>10;   
  56.   
  57. 只做思考?   
  58.   
  59. SQL> select * from emp where exists(select * from dept);   
  60.     
  61. EMPNO ENAME  JOB        MGR HIREDATE       SAL      COMM DEPTNO   
  62. ----- ---------- --------- ----- ----------- --------- --------- ------   
  63.  7369 SMITH   CLERK   7902 1980-12-17    800.00               20  
  64.  7499 ALLEN   SALESMAN  7698 1981-2-20   1600.00    300.00     30  
  65.  7521 WARD   SALESMAN  7698 1981-2-22   1250.00    500.00     30  
  66.  …..   
  67.     
  68. SQL> select * from emp where exists(select * from dept where deptno=80);   
  69.     
  70. EMPNO ENAME  JOB        MGR HIREDATE       SAL      COMM DEPTNO   
  71. ----- ---------- --------- ----- ----------- --------- --------- ------   
  72.   
  73.   
  74. 以上內容著作權歸redarmy_chen所有,如需轉載請附帶出處,如有疑問請發送郵件至redarmy_chen@qq.com  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.