oracle sql 高階連線

scu2005發表於2009-11-24

sql的高階查詢有四種連線,分別是:等值連線,非等值連線,外連線,自連線。

等值連線很簡單,如:

 

  1. select * from emp.dept   
  2. where emp.no = dept.dept_no  

非等值連線,是這兩個表之間沒有直接關係,他們要滿足一個條件,如,哪些員工的工資級別屬於三級:

  1. select ename,sal  from emp,salgrage    
  2.  where grade = 3 and sal between losal and hisal  

自連線,是同一個基表的不同行做連線,如,指出每個僱員的經理的名字:

  1. select worker.ename,manager.ename  n   
  2.  from emp  worker,emp  manager   
  3.  where worker.mgr = manager.empno  

步入正題,外連線,簡單的說,就是把不帶加號(+)那一邊的表的資料全部取出,如果帶加號那一端的表中沒有對應的資料,則用空白補充。說白了,加號的意思就是補充。(因為我每次用外連線的時候都要反應半天,所以自己找了個簡單的記憶方法,不知道你聽懂沒有?)下面這個例子在加以詳細解釋一下下,如,查出所有員工及對應部門的記錄,包括沒有任何員工的部門記錄。

  1. SELECT e.last_name,  e.department_id,  d.department_name   
  2.   
  3.   FROM employees e, departments d   
  4.   
  5.   WHERE e.department_id(+)=d.department_id;   

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11536986/viewspace-620442/,如需轉載,請註明出處,否則將追究法律責任。

相關文章