sql的高級查詢有四種連接,分別是:等值連接,非等值連接,外連接,自連接。
等值連接很簡單,如:
- select * from emp.dept
- where emp.no = dept.dept_no
非等值連接,是這兩個表之間沒有直接關係,他們要滿足一個條件,如,哪些員工的工資級別屬於三級:
- select ename,sal from emp,salgrage
- where grade = 3 and sal between losal and hisal
自連接,是同一個基表的不同行做連接,如,指出每個僱員的經理的名字:
- select worker.ename,manager.ename n
- from emp worker,emp manager
- where worker.mgr = manager.empno
步入正題,外連接,簡單的說,就是把不帶加號(+)那一邊的表的數據全部取出,如果帶加號那一端的表中沒有對應的數據,則用空白補充。說白了,加號的意思就是補充。(因爲我每次用外連接的時候都要反應半天,所以自己找了個簡單的記憶方法,不知道你聽懂沒有?)下面這個例子在加以詳細解釋一下下,如,查出所有員工及對應部門的記錄,包括沒有任何員工的部門記錄。
- SELECT e.last_name, e.department_id, d.department_name
- FROM employees e, departments d
- WHERE e.department_id(+)=d.department_id;