外連接
定義:用於查詢滿足連接條件和不滿足連接條件的記錄。
查詢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”關鍵字右邊表的相應字段,只要一邊不為空,則進行匹配。