通常所說的左鏈接,外鏈接是指左外鏈接,右外鏈接。作個簡單的測試你看吧。 先說左外鏈接和右外鏈接: [TEST1@orcl#16-12月-11] SQL>select * from t1; ID NAME ---------- -------------------- 1 aaa 2 bbb [TEST1@orcl#16-12月-11] SQL>select * from t2; ID AGE ---------- ---------- 1 20 3 30 左外鏈接: [TEST1@orcl#16-12月-11] SQL>select * from t1 left join t2 on t1.id=t2.id; ID NAME ID AGE ---------- -------------------- ---------- ---------- 1 aaa 1 20 2 bbb 右外鏈接: [TEST1@orcl#16-12月-11] SQL>select * from t1 right join t2 on t1.id=t2.id; ID NAME ID AGE ---------- -------------------- ---------- ---------- 1 aaa 1 20 3 30 從上面的顯示你能夠看出:左外鏈接是以左邊的表爲基準。通俗的講,先將左邊的表所有顯示出來,而後右邊的表id與左邊表id相同的記錄就「拼接」上去,好比說id爲1的記錄。若是沒有匹配的id,好比說t1中id爲2的t2中就沒有。那邊就以null顯示。 右外鏈接過程正好相反。 再看內鏈接: [TEST1@orcl#16-12月-11] SQL>select * from t1 inner join t2 on t1.id=t2.id; ID NAME ID AGE ---------- -------------------- ---------- ---------- 1 aaa 1 20 看到沒有? 只有一條記錄。內鏈接就是隻取出符合過濾條件的記錄 也就是t1.id=t2.id 那麼符合t1.id=t2.id的記錄只有id=1這一條,因此只顯示一條。 不像外鏈接,是將你做爲基準的表(左外鏈接就是左邊表爲基準,右外鏈接就是右邊表爲基準)的全部行都顯示出來。
select * from a,b where a.Aname=b.Aname(+);
以「+」相反方向的主表,顯示a表的全部數據,b表沒有數據用null填充。