oracle连接知识

内连接暂不叙述,直接开讲外连接
外连接包括:

  1. 左外连接(左边的表不加限制,即右边的表是匹配表),

  2. 右外连接(右边的表不加限制,即左边的表是匹配表),

  3. 全外连接(左右两边都不限制)。
    对于外连接, 也可以使用“(+) ”来表示。 关于使用(+)的一些注意事项:

  4. (+)操作符只能出现在WHERE子句中,并且不能与OUTER JOIN语法同时使用。

  5. 当使用(+)操作符执行外连接时,如果在WHERE子句中包含有多个条件,则必须在所有条件中都包含(+)操作符。

  6. (+)操作符只适用于列,而不能用在表达式上。

  7. (+)操作符不能与OR和IN操作符一起使用。

  8. (+)操作符只能用于实现左外连接和右外连接,而不能用于实现完全外连接。

  9. 对于左连接,(+)一般写在右表的后面如:
    select * from A a,B b where a.id = b.id(+);
    全外连接不支持(+)写法

示例:
还是先建两个表吧:

  create table A(
  id int;
  namea varchar;
)
  create table B(
  id int;
  nameb varchar;
)
insert into A(id,namea)select 1,tom from dual;
insert into A(id,namea)select 2,tim from dual;
insert into A(id,namea)select 3,tamp from dual;

insert into A(id,nameb)select 1,com from dual;
insert into A(id,nameb)select 2,cim from dual;
insert into A(id,nameb)select 3,camp from dual;

此时表A:

id namea
1 tom
2 tim
3 tamp

此时表B:

id nameb
1 com
2 cim

左外连接:

  left join :
  select * from A a left join B b on a.id = b.id;
  (+):
  select * from A a, B b where a.id = b.id(+);
id namea id nameb
1 tom 1 com
2 tim 2 cim
3 tamp null

用(+)来实现, 这个+号可以这样来理解: + 表示补充,即哪个表有加号,这个表就是匹配表。如果加号写在左表,右表就是全部显示,所以是右连接。

右外连接:

  right join :
  select * from A a right join B b on a.id = b.id;
  (+):
  select * from A a, B b where a.id(+) = b.id;
id namea id nameb
1 tom 1 com
2 tim 2 cim

全外连接:

左右两表都不做限制,所有记录全部显示:

  right join :
  select * from A a full join B b on a.id = b.id;
id namea id nameb
1 tom 1 com
2 tim 2 cim
3 tamp null
posted @   景伟·郭  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示