Oracle左外连接、右外连接、完全外连接以及(+)号用法

Oracle左外连接、右外连接、完全外连接以及(+)号用法,第1张

oracle连接分为:

左外连接:左表不加限制,保留左表的数据,匹配右表,右表没有匹配到的行中的列显示为null。

右外连接:右表不加限制,保留右表的数据。匹配左表,左表没有匹配到的行中列显示为null。

完全外连接:左右表都不加限制。即右外连接的结果为:左右表匹配的数据+左表没有匹配到的数据+右表没有匹配到的数据。

left/right/full outer join ...on

left/right/full join ...on

(+)号的作用:+号可以理解为补充的意思,加在那个表的列上就代表这个表的列为补充。加在右表的列上代表右表为补充,为左连接。加在左表的列上代表左表为补充,为右连接。注意:完全外连接中不能使用+号。

查看插入的数据:

执行结果

执行结果

执行结果

执行结果

执行结果

执行结果

执行结果

执行结果

执行结果

执行结果

执行结果

执行结果

Oracle中,两个表通过多个关连条件外连接的时候,如果多个条件中有没有写(+)的条件,则连接会自动变成内连接,而不再是外连接。这种情况应该是属于写SQL的失误。遇到这种情况的时候一定要注意。

只要是两张以上的表关联查询的时候,就会返回一个笛卡尔乘积,数据库会去掉那些冗余的数据,只返回有用的数据。我们用左连接和右连接查询的时候就会把那些冗余的数据也查询出来,还有双向连接也是。比如有一个学生表,students(s_id,

s_name,

s_class)

,一张班级表

classes(c_id,

c_name)。分别有如下数据:

学生表:

班级表:

s_id

s_name

s_class

c_id

c_name

1

张三

1班

1

1班

2

李四

3班

2

2班

如果学生表为左表,普通查询为:select

s_name

,c_name

from

students

s,classes

c

where

s.s_class=c.c_name

返回的结果为

张三

1班。

而当你把学生表当左表的时候,右连接查询的时候,返回的结果为:张三

1班

,李四

3班。

求采纳

1、等值连接是最常见的一种连接查询,通常是在主外键关联关系的表间建立,并将连接条件设定为有关系的列,使用“=”连接相关的表。

2、非等值连接是指在多个表中使用非等号连接,查询在多个表中有非等值关联关系的数据,非等值连接 *** 作符包括>、>=、<、<=、<>以及BETWEEN...AND、LIKE、IN等。

3、自连接是一种比较特殊的连接查询,数据来源是一个表。

4、左外连接是内连接的一种扩展,不止会返回满足连接条件的记录,还会返回那些不满足连接条件的 *** 作符左边表的其他记录。

5、右外连接和左外连接相似,右外连接不止会返回满足连接条件的记录,还会返回那些不满足连接条件的 *** 作符右边表的其他记录。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10058348.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存