Oracle數(shù)據(jù)庫子查詢介紹 |
發(fā)布時間: 2012/8/21 16:56:10 |
我們漸漸的對Oracle的知識,有了進(jìn)一步的了解與掌握,隨著時間的推移,在這節(jié)課程中我們來講解SQL子查詢的知識,希望通過授課中的內(nèi)容對你有所幫助! 1.子查詢概念 :當(dāng)一個查詢的結(jié)果是另一個查詢的條件時,稱之為子查詢。 2.使用子查詢注意事項: 3. 子查詢可以嵌套多層 4. 子查詢需要圓括號()括起來 5.子查詢語法: 6.SELECT select_list 7.FROM table 8.WHERE expr operator 9. (SELECT select_list 10. FROM table); 11.? 子查詢 (內(nèi)查詢) 在主查詢之前一次執(zhí)行完成。 12.? 子查詢的結(jié)果被主查詢使用 (外查詢)。 13.舉例:查詢員工的工資大于JONES的員工信息 14.分析過程如下: 15.首先:查詢JONES的員工工資是多少 :結(jié)果2975 16.SQL> select sal from emp where ename='JONES'; 17.實際上我們要查詢的是:薪資大于2975的員工的信息寫法如下: 18.SQL> select * from emp where sal>2975; 19.//綜合以上寫出子查詢的結(jié)果如下: 20.SQL> select * from emp where sal>(select sal from emp where ename='JONES'); 21.注意: 22.? 子查詢要包含在括號內(nèi)。 23.? 將子查詢放在比較條件的右側(cè)。 24. 25.根據(jù)查詢的結(jié)果(內(nèi)部嵌套查詢的結(jié)果)把子查詢的類型分為單行子查詢與多行子查詢, 26. 注意: 27.? 單行操作符對應(yīng)單行子查詢,多行操作符對應(yīng)多行子查詢。 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.//子查詢含有組函數(shù) 34.SQL> select * from emp where sal>(select avg(nvl(sal,0)) from emp); 35.//子查詢含有having子句 查詢部門的最小工資大于20號部門最小工資的部門號及最小工資數(shù) 36.SQL> select deptno,min(sal) from emp group by deptno having min(sal)>( select min(sal) from emp where deptno=20); 37. 38.備注:子查詢可以返回空行 沒要查詢到結(jié)果是可以的。 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 代表的是大于查詢結(jié)果的最大值 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.以上內(nèi)容版權(quán)歸redarmy_chen所有,如需轉(zhuǎn)載請附帶出處,如有疑問請發(fā)送郵件至redarmy_chen@qq.com 本文出自:億恩科技【www.riomediacenter.com】 服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |