Oracle 資料庫(oracle Database)Select 多表關聯查詢方式

來源:互聯網
上載者:User

標籤:des   style   http   color   使用   os   io   strong   

Oracle資料庫中Select語句文法及介紹

SELECT [ ALL | DISTINCT ] <欄位運算式1[,<欄位運算式2[,…]

FROM <表名1>,<表名2>[,…]

[WHERE <篩選擇條件運算式>]

[GROUP BY <分組運算式> [HAVING<分組條件運算式>]]

[ORDER BY <欄位>[ASC | DESC]]

語句說明:

[]方括弧為可選項

[GROUP BY <分組運算式> [HAVING<分組條件運算式>]]

指將結果按<分組運算式>的值進行分組,該值相等的記錄為一組,帶【HAVING】

短語則只有滿足指定條件的組才會輸出。

[ORDER BY <欄位>[ASC | DESC]]

顯示結果要按<欄位>值升序或降序進行排序

 

sql各子句的執行順序:

1. FROM

2. WHERE

3. GROUP BY

4. HAVING

5. SELECT

6. ORDER BY

www.169it.com

 

  多表關聯查詢

 

  表的串連是指在一個SQL語句中通過表與表之間的關連,從一個或多個表中檢索相關的資料,大體上表與表之間的串連主要可分四種,分別為相等串連,外串連,不等串連和自串連,本文將主要從以下幾個典型的例子來分析Oracle表的四種不同串連方式:

  1. 相等串連

  通過兩個表具有相同意義的列,可以建立相等串連條件。

  只有串連列上在兩個表中都出現且值相等的行才會出現在查詢結果中。

  例 查詢員工資訊以及對應的員工所在的部門資訊;

  SELECT * FROM EMP,DEPT;

  SELECT * FROM EMP,DEPT;

  WHERE EMP.DEPTNO = DEPT.DEPTNO;

  REM 顯示工資超過2000的員工資訊以及對應的員工的部門名稱。

  2. 外串連

  對於外串連,Oracle中可以使用“(+)”來表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN,下面將配合執行個體一一介紹。除了顯示匹配相等串連條件的資訊之外,還顯示無法匹配相等串連條件的某個表的資訊。

  外串連採用(+)來識別。

  A) 左條件(+) = 右條件;

  代表除了顯示匹配相等串連條件的資訊之外,還顯示右條件所在的表中無法匹配相等串連條件的資訊。

  此時也稱為"右外串連".另一種表示方法是:

  SELECT ... FROM 表1 RIGHT OUTER JOIN 表2 ON 串連條件

  B) 左條件 = 右條件(+);

  代表除了顯示匹配相等串連條件的資訊之外,還顯示左條件所在的表中無法匹配相等串連條件的資訊。

  此時也稱為"左外串連".

  SELECT ... FROM 表1 LEFT OUTER JOIN 表2 ON 串連條件

  例 顯示員工資訊以及所對應的部門資訊

  --無法顯示沒有部門的員工資訊

  --無法顯示沒有員工的部門資訊

  --SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO;

  --直接做相等串連:

  SELECT * FROM EMP JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO;

  REM 顯示員工資訊以及所對應的部門資訊,顯示沒有員工的部門資訊

  --SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO(+) = DEPT.DEPTNO;

  SELECT * FROM EMP RIGHT OUTER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO;

  REM 顯示員工資訊以及所對應的部門資訊,顯示沒有部門的員工資訊

  --SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO(+);

  SELECT * FROM EMP LEFT OUTER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO;

  3. 不等串連

  兩個表中的相關的兩列進行不等串連,比較符號一般為>,<,...,BETWEEN.. AND..

  REM SALGRADE

  --DESC SALGRADE;

  --SELECT * FROM SALGRADE;

  REM 顯示員工的編號,姓名,工資,以及工資所對應的層級。

  SELECT EMPNO,ENAME,SAL,SALGRADE.* FROM SALGRADE,EMP

  WHERE EMP.SAL BETWEEN LOSAL AND HISAL;

  REM 顯示僱員的編號,姓名,工資,工資層級,所在部門的名稱;

  SELECT EMPNO,ENAME,SAL,GRADE,DNAME FROM EMP,DEPT,SALGRADE

  WHERE EMP.DEPTNO = DEPT.DEPTNO AND EMP.SAL BETWEEN LOSAL AND HISAL;

  4. 自串連

  自串連是資料庫中經常要用的串連方式,使用自串連可以將自身表的一個鏡像當作另一個表來對待,從而能夠得到一些特殊的資料。下面介紹一下自串連的方法:

  將原表複製一份作為另一個表,兩表做笛卡兒相等串連。

  例 顯示僱員的編號,名稱,以及該僱員的經理名稱

  SELECT WORKER.ENAME,WORKER.MGR,MANAGER.EMPNO,MANAGER.ENAME FROM EMP WORKER,EMP MANAGER

  WHERE WORKER.MGR = MANAGER.EMPNO;

 


本文來源:Oracle 資料庫(oracle Database)Select 多表關聯查詢方式

聯繫我們

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