問:
Oracle 中 外連接 是什麼意思?
剛看了個教程還是不太明白
SELECT e.last_name, e.department_id, d.department_name
FROM employees e, departments d
WHERE e.department_id=d.department_id(+);
結果為:所有員工及對應部門的記錄,包括沒有對應部門編號department_id的員工記錄。
疑問:從數據庫中取出的是怎麼樣的?
是不是
employees 表中所有員工都取出,如:e.last_name, e.department_id全部都取出
而
department表中只取employees中員工對應的d.department_name
??
請大蝦們求教!
答:
這是外連接的一種,基本的執行流程就像你所說的。
以employees表為主來做連接,循環掃描employees表中所有員工,對於每一個員工如果在department中如果,有何他的部門號相同的部門,則進行連接生成一個新紀錄e.last_name, e.department_id,d.department_name。
如果沒有和部門號相同的部門,同樣生成一個新紀錄e.last_name, e.department_id,NULL。
注意這只是一個特例,因為是通過外鍵來做連接的,所以匹配的紀錄也只有一條。有的時候,匹配的記錄可能有多條。但是如果不匹配的話,則只有一條記錄進入結果。