ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle左右全连接总结

Oracle左右全连接总结

原创 Linux操作系统 作者:perfychi 时间:2013-01-23 09:35:30 0 删除 编辑

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);

  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(+)

  union

  select *

  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  <=>( 等价于) join 

  --左向外连接,返回左边表所有符合条件的

  left join   <=> left outer join

  --右向外连接,返回右边表所有符合条件的

  right join  <=> right outer join

  --完整外部连接,左向外连接和右向外连接的合集

  full join   <=> full outer 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,否则显示null

  select *

  from a, b

  where a.id = b.id(+)

  and b.id(+) = 2; 【  注:红字的地方要保持一致,才能看到目标效果】

  ID         ID

  ---------- ----------

  2          2

  3

  1

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/27042095/viewspace-753094/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: perl 多行注释
请登录后发表评论 登录
全部评论

注册时间:2012-06-06

  • 博文量
    484
  • 访问量
    2975667