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;
理解內連線和外連線
內連線 進行連線的兩個表對應的相匹配的字段完全相同的連線。join 外連線又分為左外連線和右外連線。左連線即left outer join 兩個表進行左連線時會返回左邊表中的所有的行和右邊表中與之相匹配的列值沒有相匹配的用空值代替。右連線即right outer join 兩個表進行右連線時會返回右...
oracle 左右連線外連線的理解
建立測試資料 create table a id number create table b id number insert into a values 1 insert into a values 2 insert into a values 3 insert into b values 1 i...
自然連線,外連線,左外連線,右外連線
1.自然連線 結果基於表r和s的笛卡爾乘積,取對應的r和s中相同屬性組都相同的值,同時相同屬性組只保留乙個 先來看圖示,2個表以及自然連線的結果 操作的步驟 1.1找出2個表中相同的屬性組 屬性a加上屬性b 1.2找相同屬性組中,相同的屬性值所對應的元組 相同的屬性值 1.2.相同屬性值對應的元組 ...