通常所说的左链接,外链接是指左外链接,右外链接。作个简单的测试你看吧。 先说左外链接和右外链接: [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填充。