oracle连接知识
内连接暂不叙述,直接开讲外连接
外连接包括:
-
左外连接(左边的表不加限制,即右边的表是匹配表),
-
右外连接(右边的表不加限制,即左边的表是匹配表),
-
全外连接(左右两边都不限制)。
对于外连接, 也可以使用“(+) ”来表示。 关于使用(+)的一些注意事项: -
(+)操作符只能出现在WHERE子句中,并且不能与OUTER JOIN语法同时使用。
-
当使用(+)操作符执行外连接时,如果在WHERE子句中包含有多个条件,则必须在所有条件中都包含(+)操作符。
-
(+)操作符只适用于列,而不能用在表达式上。
-
(+)操作符不能与OR和IN操作符一起使用。
-
(+)操作符只能用于实现左外连接和右外连接,而不能用于实现完全外连接。
-
对于左连接,(+)一般写在右表的后面如:
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 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现