[亲测]Oracle查询--子查询,分页查询(二)

ORACLE查询(子查询,分页查询)

一、子查询

(一)单行子查询 ( 只返回一条记录 )
1 .查询 2012 年 1 月用水量大于平均值的台账记录
select * from t_account where usenum > 
(select avg(usenum) from t_account where  year = '2012' and month = '01' );

结果:
在这里插入图片描述

(二)多行子查询 ( 返回了多条记录 )
in 运算符
1. 查询地址编号为 1 、3 、4 的业主记录
select * from t_owners  where addressid in (1,3,4) ;

结果:
在这里插入图片描述

2 .查询地址含有“花园”的业主的信息
select * from t_owners where addressid in ( select id from t_address where name like '%花园%');

结果:
在这里插入图片描述

3. 查询地址不含有“花园”的业主的信息
select * from t_owners where addressid not in (select id from t_address where name like '%花园%');

结果:
在这里插入图片描述

4 .查询 2012 年台账中,使用量大于 2012 年3 月最大使用量的台账数据
select * from t_account where year = '2012' and usenum >
(select max(usenum) from t_account where year = '2012' and month = '03');

结果:
在这里插入图片描述

(三)嵌套子查询 ( 在子查询中再嵌套子查询 )
1.查询在海淀区的小区名字中含有花园的业主记录
select * from t_owners ow 
where addressid in 
(select ar.id from t_area ar , t_address ad 
where ar.id = ad.areaid and ar.name = '海淀' and ad.name like '%花园%');

结果:
在这里插入图片描述

(四)标量子查询 ( 子查询的语句执行的结果直接作为主查询的结果显示 ) 标量子查询实现 : dual 专门用来呈现数据
1. 查询台账表中的用户年用水量的总和 以及 年平均用水量
-- 方式一
select sum(usenum),avg(usenum) from t_account ;
-- 方式二
select (select sum(usenum) from t_account) 年用水 ,  (select avg(usenum) from t_account)  年均用水 from dual;

结果:
在这里插入图片描述

(五)相关子查询 ( 子查询需要依赖主查询 )
1. 查询显示业主编号,业主名称、地址和业主类型
--  方式一
select os.id ,os.name,ad.name, ow.name from t_owners os ,t_address ad,t_ownertype ow;
--  方式二
select os.id , os.name 业主名 ,
(select name from t_address where id = os.addressid)  地址,
(select name from t_ownertype where id= os.ownertypeid) 业主类型
from t_owners os;

结果:
在这里插入图片描述

二、分页查询

(一)简单分页
1.分页查询台账表 T_ACCOUNT,每页 10 条记录
select * from t_account where Rownum <= 10;

结果:
在这里插入图片描述

1.分页查询台账表 T_ACCOUNT,每页 11 - 20 条记录
select a.* from 
(select rownum rn,ac.* from t_account ac) a
where rn between 11 and 20;

结果:
在这里插入图片描述

(二)基于排序的分页
1.基于排序 分页查询台账表 T_ACCOUNT ,每页 11 - 20 条记录
select a.* from 
(select rownum r,t.* from 
        (select * from t_account order by money asc) t) a
where a.r between 11 and 20;

结果:
在这里插入图片描述

以下推荐个人文章
[亲测]Oracle数据库安装与配置

[亲测]Oracle数据库操作

[亲测]Oracle表的创建、修改与删除

[亲测]Oracle数据库约束

[亲测]Oracle数据增删改

[亲测]Oracle查询–单表查询,连接查询(一)

[亲测]Oracle查询–子查询,分页查询(二)

[亲测]Oracle查询–单行函数–PL/SQL,分析函数,集合运算(三)

Oracle执行计划Explain Plan 如何使用

[亲测]数据库优化

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值