oracle 语句 子查询,Oracle子查询

Oracle子查询就是嵌套查询,他把select 查询的结果作为另外一个select、update或delete语句的条件,它的本质就是where条件查询中的一个条件表达式。其中我们数据库开发过程中,子查询可以根据查询结果的行数的多少,可以区分为单行子查询和多行子查询。

1、单行子查询:向外部返回的结果为空或者返回一行。

2、多行子查询:向外部返回的结果为空、一行、或者多行。

Oracle单行子查询

Oracle单行子查询是利用where条件“=”关联查询结果的,如果单行子查询返回多行会报单行子查询不能返回多行的数据库错误,下面利用案例讲解子查询。

案例1、查询学生信息表(stuinfo)和班级表(class)中班级为“信息科学2班(18)”的所有学生信息select *

from stuinfo t

where t.classno in (select b.classno

from class b

where b.classname = '信息科学2班(18)');

/*虽然在这利用内关联也可以查出结果,

而且效率更好,但是在一些没有关联关

系的时候可以利用子查询 */

select t.*

from stuinfo t, class b

where t.classno = b.classno

and b.classname = '信息科学2班(18)';

结果:

1542288740487_587708.png

Oracle多行子查询

Oracle多行子查询则需要利用IN关键字来接收子查询的多行结果。也可以用量化关键字ANY、ALL和关系运算符>、>=、=、

ANY关键字:表示子查询结果当中的任意一个。假如:>ANY(子查询),表示:只要大于子查询当中的任意一个值,这个条件就满足。

ALL关键字:表示子查询中的所有结果。假如:>ALL(子查询),表示:必须大于子查询当中的所有结果才能满足这个条件。

案例2、查询班级表中所有班级的学生信息。代码如下:select * from stuinfo t where t.classno in (select b.classno from class b);

1542288675721_357099.png

案例3、ANY/ALL关键字案例展示,代码如下:--年龄只要大于当中子查询的最小值26岁即可

select * from stuinfo t where t.age>any(26,27,28);

--年龄必须大于子查询当中的最大值28岁才可以

select * from stuinfo t where t.age>all(26,27,28);

1542288967582_221488.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值