在講外連線之前,先舉例介紹內連線,也就是一般的相等連線。
select * from a, b where a.id = b.id;
對於外連線,oracle中可以使用「(+)」來表示,9i可以使用left/right/full outer join,下面將配合例項一一介紹。
1. left outer join:左外關聯
select e.last_name, e.department_id, d.department_name
from employees e
left outer join departments d
on (e.department_id = d.department_id);
等價於
select e.last_name, e.department_id, d.department_name
from employees e, departments d
where e.department_id=d.department_id(+);
結果為:所有員工及對應部門的記錄,包括沒有對應部門編號department_id的員工記錄。
2. right outer join:右外關聯
select e.last_name, e.department_id, d.department_name
from employees e
right outer join departments d
on (e.department_id = d.department_id);
等價於
select e.last_name, e.department_id, d.department_name
from employees e, departments d
where e.department_id(+)=d.department_id;
結果為:所有員工及對應部門的記錄,包括沒有任何員工的部門記錄。
3. full outer join:全外關聯
select e.last_name, e.department_id, d.department_name
from employees e
full outer join departments d
on (e.department_id = d.department_id);
結果為:所有員工及對應部門的記錄,包括沒有對應部門編號department_id的員工記錄和沒有任何員工的部門記錄。
內聯結 外聯結 左聯結 右聯結
1 內聯結 將兩個表中存在聯結關係的字段符合聯結關係的那些記錄形成記錄集的聯結。2 外聯結 分為外左聯結和外右聯結。左聯結a b表的意思 就是將表a中的全部記錄和表b中聯結的字段與表a的聯結字段符合聯結條件的那些記錄形成的記錄集的聯結,這裡注意的是最後出來的記錄集會包括表a的全部記錄。右聯結a b表...
SQL學習之高階聯結 自聯結 自然聯結 外聯接
這是講解所需要的sql指令碼 一 自聯結 如下 select from customers 現在有個需求,需要給tom同一公司的所有會員傳送一條郵件。分析下基本思路,首先根據tom找到其所在的公司名,在根據公司名找到其公司民下的所有會員。下面是解決 select from customers whe...
內連線和外聯結連線的區別
資料庫之連線 資料庫中多表之間的查詢通常使用連線的方式來實現。連線分為內連線 外連線和交叉連線。內連線 內聯接使用比較運算子根據每個表共有的列的值匹配兩個表中的行。包括相等連線和自然連線。外連線 外連線又分為左外連線 右外連線和完整外連線。1.左外連線 left join 或left outer j...