什麼是多表查詢?
從多個表中獲取數據
1.1 笛卡爾集
1.2 等值連接
連接的類型有:等值連接、不等值連接、外連接、自連接
等值連接:
示例:查詢員工信息,要求顯示:員工號,姓名,月薪,部門名稱
select e.empno,e.ename,e.sal,d.name from emp e,dept d where e.deptno = d.deptno
1.3 不等值連接
示例:查詢員工信息,要求顯示:員工號,姓名,月薪,部門名稱
select e.empno,e.ename,e.sal,s.grade from emp e ,salgrade s where e.sal between s.losal and s.hisal
1.4 外連接
示例:查詢員工信息,要求顯示:部門號,部門名稱,人數
select d.deptno 部門號,d.dname 部門名稱,count(e.empno) 人數 from emp e,dept d where e.deptno = d.deptno group by d.deptno,d.dname
核心:通過外連接,把對於連接條件不成立的記錄,仍然包含在最後的結果中
左外連接:當連接條件不成立的時候,等號左邊的表仍然被包含
右外連接:當連接條件不成立的時候,等號右邊的表仍然被包含
例如左外連接:
select A.a,B.a from A LEFT JOIN B ON A.b=B.b;
等價於
select A.a,B.a from A,B where A.b = B.b(+);
再舉個例子,這次是右外連接:
select A.a,B.a from A RIGHT JOIN B ON A.b=B.b;
等價於
select A.a,B.a from A,B where A.b (+) = B.b;