oracle子查询语句_菟丝子用法

oracle子查询语句_菟丝子用法子查询 一.概述: 子查询:一个select语句,作为另一条select语句语法的一部分。 select语句语法: select distinct * | 字段 from 表名 where 查询条件…

关于Oracle子查询各大用法详解

子查询

一.概述:

子查询:一个select语句,作为另一条select语句语法的一部分。

select语句语法:

select distinct * | 字段 from 表名
where 查询条件
group by 分组字段 having 分组条件
order by 排序字段 asc | desc

 

二. 单行子查询

  • 只返回一条记录
  • 单行操作符

oracle子查询语句_菟丝子用法

 

  • 编写步骤,将一个需求拆分成多个子需求,依次完成每一个子需求,最后将组合子需求
--(一)单行子查询
--只返回一条记录


--需求:查询2012年1月用水量大于平均值的台账记录
--1用水量平均值
select avg(ac.usenum) from t_account ac where ac.year="2012"
 and  ac.month="01";

--2.查询2012年1月所有用水量
select * from t_account ac 
where ac.year="2012" and 
ac.month="01";

--合并
select * from t_account ac 
where ac.year="2012" and 
ac.month="01" and ac.usenum>=(
select avg(ac.usenum) from t_account ac where ac.year="2012" and 
ac.month="01"
);

代码100分

 

 

 

三. 多行子查询

 

  • 返回了多条记录
  • 多行操作符
  • oracle子查询语句_菟丝子用法
代码100分

--(二)多行子查询
--返回了多条记录

--1查询地址编号为1 、3、4 的业主记录

select * from t_owners ow where ow.addressid in(1,3,4);


--2查询地址含有“花园”的业主的信息
--1.含有"花园"地址id
select ad.id from t_address ad where ad.name like "%花园%";

--2.整合
select * from t_owners ow where ow.addressid 
in(select ad.id from t_address ad where ad.name like "%花园%");


--方式2
select * from t_owners ow ,t_address ad 
where ow.addressid=ad.id and ad.name like "%花园%";



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



--4查询2012年台账中,使用量大于2012年3月最大使用量的台账数据

--方式1;求最大值
--1.2012年3月最大使用量
select max(ac.usenum) from t_account ac where ac.year="2012" 
and ac.month="03";


--2.查询2012年台账中使用量大于13808
select * from t_account ac where ac.year="2012" 
 and ac.usenum>13808;


--整合
select * from t_account ac where ac.year="2012" 
 and ac.usenum>(select max(ac.usenum) from t_account ac where ac.year="2012" 
and ac.month="03");




--方式2;使用all运算符
--1.求2012年3月所有使用量
select ac.usenum from t_account ac where ac.year="2012" 
and ac.month="03";

--2.查询2012年台账大于3月份所有使用量
select * from t_account ac where ac.year="2012"
and ac.usenum >all(13808,13390);


--3整合
select * from t_account ac where ac.year="2012"
and  ac.usenum >all(select ac.usenum from t_account ac where ac.year="2012" 
and ac.month="03"); 

 

 

四. 嵌套子查询

  • 嵌套子查询:在子查询中再次嵌入子查询

--(三)嵌套子查询

----嵌套子查询:在子查询中再次嵌入子查询
--查询在海淀区的小区名字中含有花园的业主记录
--1.查询区域id,名称为"海淀"
select a.id from t_area a where a.name="海淀";

--2 查询地址,条件,名称含"花园"和区域id
select ad.id from t_address ad 
where ad.name  like "%花园%" and
ad.areaid=(select a.id from t_area a where a.name="海淀");


--3 查询业主,条件;一组地址id
select * from t_owners ow where 
ow.addressid=(select ad.id from t_address ad 
where ad.name  like "%花园%" and
ad.areaid=(1));


--4.组合
select * from t_owners ow where 
ow.addressid=(select ad.id from t_address ad 
where ad.name  like "%花园%" and
ad.areaid=(select a.id from t_area a where a.name="海淀"));

 

 

五.标量子查询

标量子查询:子查询的语句执行的结果直接作为主查询的结果显示

代码100分

--查询台账表中的用户年用水量的总和    以及  年平均用水量
--1.查询用水量总和
select sum(ac.usenum) from t_account ac;


--2.查询用水量平均值
select avg(ac.usenum) from t_account ac;


--3.将两个不相关的数据,使用虚表dual组合在一起
select
 (select sum(ac.usenum)from t_account ac) as 年用水量的总和,
 (select avg(ac.usenum) from t_account ac)as 年平均用水量
  from dual;

 

 

 

六.相关子查询

  • 相关子查询:子查询依赖外面的主查询的结果

--查询显示业主编号,业主名称、地址和业主类型
select ow.id,ow.name,ad.name,ot.name
 from t_owners ow ,t_address ad,t_ownertype ot
where ow.addressid=ad.id 
and ow.ownertypeid=ot.id;



--方式2;相关查询
select ow.id as 业主编号,ow.name as 业主名称,
(select ad.name from t_address ad where ad.id=ow.addressid) as 地址,
(select ot.name from t_ownertype ot where ot.id=ow.ownertypeid) as 业主类型 
 from t_owners ow;








--查询显示业主编号、业主名称、地址、所属区域、业主分类
--方式一
select ow.id,ow.name,ad.name,ar.name,ot.name from 
 t_owners ow ,t_address ad, t_area ar,t_ownertype ot
 where ow.addressid=ad.id and ad.areaid=ar.id 
and ow.ownertypeid=ot.id;


--方式二;相关查询
select ow.id as 业主编号,ow.name as 业主名称,
(select ad.name from t_address ad where ad.id=ow.addressid) as 地址,
(select ar.name from t_area ar, t_address ad where ar.id=ad.id and ad.id=ow.addressid)as 所属区域,
(select ot.name from t_ownertype ot where ot.id=ow.ownertypeid) as 业主类型 
 from t_owners ow ;

 

 

今天就先到这里了,让我们下篇见噢!!!

 

看完恭喜你,又知道了一点点!!!

你知道的越多,不知道的越多! 

~感谢志同道合的你阅读,  你的支持是我学习的最大动力 ! 加油 ,陌生人一起努力,共勉!!

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8168.html

(0)
上一篇 2023-03-06 13:30
下一篇 2023-03-06

相关推荐

  • 杨玉基:知识图谱在美团推荐场景中的应用[亲测有效]

    杨玉基:知识图谱在美团推荐场景中的应用[亲测有效]导读: 美团是一个生活服务领域的平台,需要大量知识来理解用户的搜索意图,同时对于商家侧我们也需要利用现有的知识对海量信息进行挖掘与提取,进而优化用户体验。今天分享的主题是知识图谱在美团推荐场景中的应用

    2023-05-17
    152
  • PostgreSQL技术分享公开课:备份恢复与Point-in-Time Recovery(PITR)[亲测有效]

    PostgreSQL技术分享公开课:备份恢复与Point-in-Time Recovery(PITR)[亲测有效]不定期分享一些技术内容,欢迎感兴趣的同学参与进来。 1、PostgreSQL 12.2 备份恢复 时间:2020-03-14 20:00-21:00 内容介绍: 1.pg_dump备份以及进行选择性…

    2023-02-03
    166
  • Python 中的列表添加:如何使用 append() 函数添加元素?

    Python 中的列表添加:如何使用 append() 函数添加元素?Python 中的列表(list)是一种非常常用的数据类型,它是可变的、有序的序列,可以存储不同类型的数据。而在对列表进行操作时,经常需要进行添加元素的操作,而 Python 的内置函数 append() 就是其中一种常用的添加元素的方法。下面将从多个方面对如何使用 append() 函数添加元素进行详细的阐述。

    2024-03-03
    94
  • MongoDB索引(7)

    MongoDB索引(7)索引是对数据库表中一列或多列的值进行排序的一种结构,可以让我们查询数据库变得 更快。MongoDB 的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的查询优化技巧。 增加检索的效率. mo

    2023-03-27
    145
  • 索引——谈谈你对索引的认识和理解「终于解决」

    索引——谈谈你对索引的认识和理解「终于解决」为什么要用索引? 一般的应用系统,读写比例在10:1左右,插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是

    2023-03-09
    146
  • Python isalpha函数:判断一个字符串是否全为字母

    Python isalpha函数:判断一个字符串是否全为字母Python中的isalpha函数是用来判断字符串是否只由字母组成的函数,如果字符串中全部由字母构成,返回True,否则返回False。它的语法如下:

    2024-04-10
    64
  • Python判断字符串是否包含某个子串并输出标题

    Python判断字符串是否包含某个子串并输出标题在Python开发中,字符串操作是一个非常关键的部分。判断字符串是否包含某个子串并输出h1标题/h1则是开发过程中经常会遇到的问题。本文将从多个方面探讨Python判断字符串是否包含某个子串并输出h1标题/h1的方法。

    2024-04-23
    80
  • Mongdb可视化工具Studio 3T的使用

    Mongdb可视化工具Studio 3T的使用一、官网地址 https://studio3t.com/ 二、下载和安装 点击DOWNLOAD即可下载 按照自己电脑系统进行选择,然后填写邮箱和选择行业,第一次登录如果不提交不会下载,下载完成是一个z

    2022-12-24
    162

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注