--建立测试数据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);insert into b values(2);insert into b values(4);commit;--左:--主流数据库通用的方法select * from a left join b on a.id=b.id;--Oracle特有的方法select * from a, b where a.id=b.id(+); ID ID---------- ---------- 1 1 2 2 3 --右:--主流数据库通用的方法select * from a right join b on a.id=b.id;--Oracle特有的方法select * from a, b where a.id(+)=b.id; ID ID---------- ---------- 1 1 2 2 4 --内--主流数据库通用的方法select * from a join b on a.id=b.id;--where关联select * from a, b where a.id=b.id; ID ID---------- ---------- 1 1 2 2 --全外--主流数据库通用的方法select * from a full join b on a.id=b.id;--Oracle特有的方法select * from a, b where a.id = b.id(+)unionselect * from a, b where a.id(+) = b.id; ID ID---------- ---------- 1 1 2 2 3 4--完全,也叫交叉连接或者笛卡尔积--主流数据库通用的方法select * from a,b;--或者select * from a cross join b; ID ID---------- ---------- 1 1 1 2 1 4 2 1 2 2 2 4 3 1 3 2 3 4连接无非是这几个--内连接和where相同inner join--左向外连接,返回左边表所有符合条件的left join--右向外连接,返回右边表所有符合条件的right join--完整外部连接,左向外连接和右向外连接的合集full join--交叉连接,也称笛卡儿积。返回左表中的每一行与右表中所有行的组合cross join--补充:--左向外连接,返回左边表所有符合条件的,--注意这里没有第二个加号,会直接过滤掉数据,只显示符合条件的记录select * from a, b where a.id = b.id(+) and b.id = 2; ID ID---------- ---------- 2 2 --左向外连接,返回左边表所有符合条件的--注意where上第二个加号,它的作用是修改右边表记录的显示,例如如果b.id(+) = 2,显示为2,否则显示nullselect * from a, b where a.id = b.id(+) and b.id(+) = 2; ID ID---------- ---------- 2 2 3 1声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。