Oracle 學習筆記 14 -- 集合操作和進階子查詢

來源:互聯網
上載者:User

標籤:

Oracel提供了三種類型的集合操作:各自是並(UNION) 、交(INTERSECT)、 差(MINUS)

UNION :將多個操作的結果合并到一個查詢結果中,返回查詢結果的並集,自己主動去掉反覆的部分。

UNION ALL:將多個操作的結果合并到一個查詢結果中,可是保留反覆的內容。

INTERSECT: 返回多個操作結果中同樣的部分。

MINUS:返回兩個查詢結果的差集,去掉反覆的部分。

基本的文法格式為:

SELECT * FROM  table_name 1

[union , union all , intersect , minus]

SELECT * FROM  table_name2

注意:僅僅能有一個Order by 語句 ,而且該語句要放在末尾。

語句運算式要使用第一個select的列名,別名或者是位

置編號號。在select 列表中的列名和運算式在數量和資料類型上也要相應。

 

進階子查詢

子查詢:前面已經說過,即:SQL語句內部嵌套還有一個select語句。內部查詢要先於外邊查詢進行。內部查詢返回的

結果要給外部查詢使用。

多列子查詢

在筆記7中的子查詢。都是基於單列的查詢,如今學習的是多列的子查詢。主查詢要與子查詢返回的多個列進行比

較。不在是一個列。

基本的文法:

SELECT * FROM table_name

where (column1 , column2) = | in (

   SELECT  column1 , column2 from table_name2  where ...

)

返回的結果不在是單列,而是多列。

外層查詢中where語句後面的多個列名要用括弧括起來。

相互關聯的子查詢

子查詢中使用主查詢的列。主查詢的每一行的資料都運行一次子查詢。

例,求emp表中工資大於平均工資的員工資訊

select * from emp e
where sal > (
      select avg(sal) from emp
      where deptno  = e.deptno    
)

 

EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
 7566 JONES      MANAGER    7839 1981/4/2      2975.00               20
 7698 BLAKE      MANAGER    7839 1981/5/1      2850.00               30
 7788 SCOTT      ANALYST    7566 1987/4/19     3000.00               20
 7839 KING       PRESIDENT       1981/11/17    5000.00               10
 7900 JAMES      CLERK      7698 1981/12/3     2000.00               30
 7902 FORD       ANALYST    7566 1981/12/3     3000.00               20
 
6 rows selected

EXISTS操作符

    EXISTS操作符檢查在子查詢中是否存在滿足條件的行,若存在。不在子查詢中繼續尋找。返回true,如不存在。返回false 。繼續子查詢中尋找。NOT EXISTS操作符檢查在子查詢中是否不存在滿足條件的行 。

with子句      

使用 WITH子句, 能夠避免在 SELECT語句中反覆書寫同樣的語句塊WITH子句將該子句中的語句塊運行一次並儲存到使用者的暫時資料表空間中使用 WITH子句能夠提高查詢效率

嵌套子查詢

 例:查詢比本部門工資高的員工資訊

select deptno  ,  ename,sal , avgsal
from  emp e ,(select avg(sal) avgsal from emp  group by  deptno )
where  sal > avgsal

DEPTNO ENAME            SAL     AVGSAL
------ ---------- --------- ----------
    30 JAMES        2000.00 1741.66666
    10 CLARK        2450.00 1741.66666
    30 BLAKE        2850.00 1741.66666
    20 JONES        2975.00 1741.66666
    20 SCOTT        3000.00 1741.66666
    20 FORD         3000.00 1741.66666
    10 KING         5000.00 1741.66666
    10 CLARK        2450.00       2175
    30 BLAKE        2850.00       2175
    20 JONES        2975.00       2175
    20 SCOTT        3000.00       2175
    20 FORD         3000.00       2175
    10 KING         5000.00       2175
    20 JONES        2975.00 2916.66666
    20 SCOTT        3000.00 2916.66666
    20 FORD         3000.00 2916.66666
    10 KING         5000.00 2916.66666
 
17 rows selected

在from語句中,使用了子查詢,查詢出部門的平均工資,從而實現了員工工資與部門平均工資的比較。

Oracle 學習筆記 14 -- 集合操作和進階子查詢

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.