oracle内连接使用,Oracle中的联合查询-自然连接/外连接/内连接

自然连接

select *

from r1 natural [inner] join r2 natural [inner] join r3

where P;

select A1,A2

from r1

natural [inner] join

r2,r3 where r2.A=r3.B;

自然连接中,匹配关系(relation,表)中属性(attribute,列)的属性名称相同的所有列,只保留所有属性名称都相同的元组(tuple,行),并显示出来;列出属性的顺序:首先列出两个关系中相同的属性,然后列出那些只存在在第一个关系中的属性,最后输出只存在第二个关系中的属性。

为了发扬自然连接的优点,同时避免不必要的相等属性带来的危险,SQL允许用户来指定需要那些列相等:

select *

from r1 [inner] join r2 using (attri_name);

注意事项:

1、如果在使用using关键字时,而且select的结果列表项中包含了using关键字所指明的那个关键字,那么请不要在select的结果列表项中对该关键字指明它属于哪个表。

2、using中仅能使用一个列名。

3、natural join关键字和using关键字是互斥的,也就是说不能同时出现。

外连接

1.左外连接

//自然连接(左外连接)

select *

from student natural left [outer] join grade;

//另一种左外连接方式(非自然连接)

select *

from student A left [outer] join grade B on A.id=B.id;

等价于

select *

from student A,grade B

where A.id=B.id(+);

2.右外连接

//自然连接(右外连接)

select *

from student natural right [outer] join grade;

//另一种右外连接方式(非自然连接)

select *

from student A right [outer] join grade B

on A.id=B.id;

select *

from student A,grade B

where A.id(+)=B.id;

3.全外连接

//自然连接(全外连接)

select *

from student natural full [outer] join on grade;

//另一种全外连接

select *

from student A full [outer] join grade B

on A.id=B.id;

(+)操作符只能出现在where子句中

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

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

(+)操作符不能与or和in操作符一起使用。

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

内连接

当省略outer和inner时,默认为内连接

select *

from student A [inner] join grade B on A.id=B.id;

等价于

select *

from student A,grade B where A.id=B.id;

select *

from student [inner] join grade using(id);

的结果类似于自然连接,不重复显示id列~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值