程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> 外連接,左外連接

外連接,左外連接

編輯:Oracle教程

外連接,左外連接


定義:用於查詢滿足連接條件​和不滿足連接條件的記錄。

查詢emp表記錄

SELECT * FROM emp;
  empno    ename    job          mgr    hiredate      sal      comm    deptno
1    7369    SMITH   CLERK       7902    1980/12/17   800.00            20
2    7499    ALLEN    SALESMAN    7698    1981/2/20    1600.00    300.00        30
3    7521    WARD    SALESMAN    7698    1981/2/22    1250.00    500.00        30
4    7566    JONES    MANAGER     7839    1981/4/2    2975.00            20
5    7654    MARTIN   SALESMAN    7698     1981/9/28   1250.00        1400.00   30
6    7698    BLAKE   MANAGER      7839    1981/5/1     2850.00              30
7    7782    CLARK   MANAGER      7839    1981/6/9     2450.00           10
8    7788    SCOTT   ANALYST       7566        0087/4/19   3000.00          20
9    7839    KING     PRESIDENT          1981/11/17   5000.00          10
10   7844   TURNER   SALESMAN    7698     1981/9/8    1500.00     0.00     30
11   7876   ADAMS   CLERK          7788     0087/5/23    1100.00           20
12   7900   JAMES    CLERK          7698     1981/12/3   950.00           30
13   7902   FORD     ANALYST       7566    1981/12/3    3000.00          20
14   7934   MILLER   CLERK          7782    1982/1/23    1300.00          10

查詢dept表記錄

SELECT * FROM dept;
  deptno    dname         loc
1    10    ACCOUNTING    NEW YORK
2    20    RESEARCH        DALLAS
3    30    SALES          CHICAGO
4    40    OPERATIONS    BOSTON

連接查詢語句

SELECT e.ename, d.dname FROM emp e LEFT OUTER JOIN dept d ON(e.deptno = d.deptno);   --左外連接
SELECT e.ename, d.dname FROM emp e RIGHT OUTER JOIN dept d ON(e.deptno = d.deptno);--右外連接
SELECT e.ename, d.dname FROM emp e FULL OUTER JOIN dept d ON(e.deptno = d.deptno); --全外連接

三個連接查詢結果比較

  LEFT OUTER                 RIGHT OUTER        FULL OUTER
1 SMITH    RESEARCH     1 CLARK         ACCOUNTING      1 SMITH     RESEARCH
2 ALLEN    SALES         2 KING       ACCOUNTING      2 ALLEN    SALES
3 WARD    SALES         3 MILLER        ACCOUNTING     3 WARD     SALES
4 JONES    RESEARCH      4 JONES     RESEARCH        4 JONES    RESEARCH
5 MARTIN   SALES         5 FORD       RESEARCH            5 MARTIN   SALES
6 BLAKE    SALES         6 ADAMS    RESEARCH           6 BLAKE    SALES
7 CLARK    ACCOUNTING          7 SMITH    RESEARCH           7 CLARK    ACCOUNTING
8 SCOTT    RESEARCH             8 SCOTT    RESEARCH            8 SCOTT    RESEARCH
9 KING    ACCOUNTING            9 WARD     SALES              9 KING      ACCOUNTING
10 TURNER  SALES             10 TURNER      SALES             10 TURNER   SALES
11 ADAMS   RESEARCH       11 ALLEN      SALES            11 ADAMS    RESEARCH
12 JAMES   SALES              12 JAMES      SALES            12 JAMES     SALES
13 FORD    RESEARCH            13 BLAKE    SALES             13 FORD      RESEARCH
14 MILLER   ACCOUNTING       14 MARTIN    SALES           14 MILLER    ACCOUNTING
                  15       OPERATIONS      15         OPERATIONS

通過上面表的相關查詢結果:
知識准備:
首先應該明白什麼是驅動表,說白了就是表所在的位置(表在“LEFT OUTER JOIN”關鍵字的左邊或者右邊的位置)。
左外連接:驅動表就是“LEFT OUTER JOIN”關鍵字的左邊的表。
右外連接:驅動表就是“LEFT OUTER JOIN”關鍵字的右邊的表。
全外連接:此時驅動表是“LEFT OUTER JOIN”關鍵字的兩邊的表。
sql語句的執行順序
左外連接:先查詢“LEFT OUTER JOIN”關鍵字左邊的表。
右外連接:先查詢“LEFT OUTER JOIN”關鍵字右邊的表。
全外連接:先查詢“LEFT OUTER JOIN”關鍵字左邊的表(如果查詢左邊相應的字段為空,那麼查詢右邊表的相應字段,若不為空,則進行匹配)。

區分左外連接、右外連接、全外連接
左外連接:
先查詢“LEFT OUTER JOIN”關鍵字左邊表的相應字段,若為空,則不與右邊表進行匹配。
右外連接:
先查詢“LEFT OUTER JOIN”關鍵字右邊表的相應字段,若為空,則不與左邊表進行匹配。
全外連接
先查詢“LEFT OUTER JOIN”關鍵字左邊表的相應字段,若為空,查詢“LEFT OUTER JOIN”關鍵字右邊表的相應字段,只要一邊不為空,則進行匹配。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved