oracle基础-子查询 备份

 一、什么是子查询

        子查询是在SQL语句内的另外一条select语句,也被称为内查询活着内select语句。在select、insert、update、delete命令中允许是一个表达式的地方都可以包含子查询,子查询也可以包含在另一个子查询中。

【例1.1】在Scott模式下,在emp表中查询部门名称(dname)为“RESEARCH”的员工信息。

select * from emp where deptno=(select deptno from dept where dname = 'RESEARCH')

对上面的代码进行分析,原本在emp表中不存在dname字段,但emp表中存在deptno字段。通过deptno字段可以管理两个表。

也可以使用多表关联查询来实现。

从上面两个查询语句可以看出,相比多表查询,子查询更加灵活、功能更加强大,而且容易理解。但是子查询的效率要高于多表关联查询。在一般情况下,外查询语句检索一行,子查询语句就需要检索一遍数据,然后判断外查询语句的条件是否满足。如果条件满足,则外查询语句将检索到的数据行添加到结果集中,如果条件不满足,则外查询语句继续检索下一行数据,所以子查询相对多表关联查询要慢一些。

注意:

1、子查询必须使用()括起来。

2、子查询中不能包括order by 子句。

3、子查询允许嵌套多层,但不能超过255层。

在Oracle 11g中,把子查询细化为单行子查询、多行子查询、关联子查询。

二、单行子查询

        单行子查询是指返回一行数据的子查询语句。当在where子句中引用单行子查询时,可以使用单行比较运算符(=,<,>,>=,<=,<>)。

        【例2.1】在emp表中,查询出既不是最高工资,也不是最低工资的员工信息。

        

select * from emp where sal > (select min(sal) from emp) and sal < (select max(sal) from emp)

         上面的语句中,如果内层子查询语句的执行结果为空值,那么外层的where子句就始终不会满足条件,这样改查询的结果就必然为空值,因为空值无法参与比较运算。

        在执行单行子查询时,要注意子查询的返回结果必须是一行数据,否则Oracle会提示无法执行。另外,子查询中也不能包含order by 子句,如果非要对数据进行排序,只能在外查询语句中使用order by 子句。

三、多行子查询

        多行子查询是指返回多行数据的子查询语句。当在where子句中使用多行子查询时,必须使用多行比较运算符(IN,ANY,ALL)。

        3.1 使用in运算符

        当在多行子查询中使用in运算符时,外查询会尝试与子查询结果中的任何一个结果进行匹配,只要有一个匹配成功,则外查询返回当前检索的记录。

        【例3.1.1】在emp表中,查询不是销售部门SALES的员工信息

        

select * from emp where deptno in (select deptno from dept where dname <> 'SALES')

        3.2 使用any运算符

        any运算符必须与单行操作符结合使用,并且返回行只要匹配子查询的任何一个结果即可。

        【例3.2.1】在emp表中,查询工资大于10号部门的任意一个员工工资的其他部门的员工信息

        

select * from emp where sal > any(select sal from emp where deptno = 10) and deptno <> 10

 

 3.3 使用all运算符

        all运算符必须与单行运算符结合使用,并且返回行必须匹配所有子查询的结果

        【例3.3.1】在emp表中,查询工资大于部门编号是30的所有员工信息

        

select * from emp where sal > all (select sal from emp where deptno = 30)

 

四、关联子查询

        在单行子查询和多行子查询中,内查询和外查询是分开执行的,也就是说,内查询的执行与外查询的执行没有关系,外查询仅仅是使用内查询的最终结果。在一些特殊需求的子查询中,内查询的执行需要借助外查询,而外查询的执行又离不开内查询的执行,这时,内查询和外查询是相互关联的,这种子查询就是称为关联子查询。

【例4.1】在emp表中,使用关联子查询检索公司大于相同职位的平均公司的员工信息

select * from emp e where sal > (select avg(f.sal) from emp f where e.job = f.job) order by job

注意:在执行关联子查询的过程中,必须遍历数据表中的每条记录,因此如果被遍历的数据表中有大量数据记录,则关联子查询的执行速度会比较缓慢。

        需要补充一点的是,关联子查询不但可以作为select语句的子查询,也可以作为insert,update,delete语句的关联子查询。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/748727.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue生成Canvas二维码

npm install qrcode在Vue组件中引入QRCode库&#xff1a;import QRCode from qrcode;在Vue组件的methods中创建一个方法来生成二维码&#xff1a; generateQRCode() {const canvas this.$refs.qrCodeCanvas; // 获取canvas DOM元素的引用const text Hello, World!; // 要生成…

JVM理解学习

参考视频 运行时数据区 JVM架构总览图 绿色的&#xff1a;方法区&#xff0c;堆&#xff0c;是所有线程共享的 黄色的&#xff1a; 虚拟机栈&#xff0c;本地方法栈&#xff0c;程序计数器&#xff0c;是线程私有的 程序计数器 程序计数器是一块较小的内存空间&#xff0c;物…

SpringBoot(异常处理)

SpringBoot&#xff08;异常处理&#xff09; 1.基本介绍 2.debug异常处理机制 1.找到 DefaultErrorViewResolver 2.下断点 3.debug启动&#xff0c;浏览器输出一个不存在的页面 4.第一次查找 error/404 1.查看目前要找的视图名 2.准备去查找资源 3.准备从四个默认存放静态资…

AcWing.505 火柴排队(离散化逆序对)

题目 涵涵有两盒火柴&#xff0c;每盒装有 n  根火柴&#xff0c;每根火柴都有一个高度。 现在将每盒中的火柴各自排成一列&#xff0c;同一列火柴的高度互不相同&#xff0c;两列火柴之间的距离定义为&#xff1a; ∑i1n(ai−bi)2 其中 ai表示第一列火柴中第 i个火柴的…

[COCI2016-2017#2] Prosječni 解题记录

[COCI2016-2017#2] Prosječni 解题记录 题意简述 构造一个 n n n \times n nn 的矩阵&#xff0c;使得每一行/列的平均都在这一行/列当中&#xff0c;并且矩阵内各个数字不相同。 题目分析 观察样例就可以轻松发现&#xff1a;当 n n n 为奇数时&#xff0c;矩阵内的各个…

开源漏扫工具:DependencyCheck

开源漏扫工具&#xff1a;DependencyCheck Dependency-Check 是 OWASP&#xff08;Open Web Application Security Project&#xff09;的一个实用开源程序&#xff0c;用于识别项目依赖项并检查是否存在任何已知的&#xff0c;公开披露的漏洞。 DependencyCheck是一个开源的…

【并查集】模版

【模板】并查集 - 洛谷 #include <bits/stdc.h> using namespace std; const int N2e59; int a[N]; int Find(int x) {if(xa[x]){return x;}else{a[x]Find(a[x]);return a[x];} } void push(int x,int y) {a[Find(x)]Find(y);return ; } int main() {int n,m; cin>>…

vsto 多插件通信

if (Target.Column 5){Thread.Sleep(5000);Target.Interior.ColorIndex 55;//触发另外一个插件Target.Application.Calculation XlCalculation.xlCalculationAutomatic;Thread.Sleep(5000);//这行执行完之后&#xff0c;才会触发另外一个Target.Interior.ColorIndex 54;} …

Python win32com.client.Dispatch打开Word文档并导出为 PDF时失败Command failed

Python win32com.client.Dispatch打开Word文档并导出为 PDF时失败Command failed 输出异常&#xff1a; (-2147352567, Exception occurred., (0, uMicrosoft Word, uCommand failed, uwdmain11.chm, 36966, -2146824090), None)调试之后&#xff0c;主要是下面几个原因: 路径…

前端实例:页面布局1(后端数据实现)

效果图 注&#xff1a;这里用到后端语言php&#xff08;页面是.php文件&#xff09;,提取纯html也可以用 inemployee_index.php <?php include(includes/session.inc); $Title _(内部员工首页); $ViewTopic 内部员工首页; $BookMark 内部员工首页; include(includes/…

Vue学习日记 Day6 —— Vuex

一、vuex概述 1、目标&#xff1a;明确vuex是什么&#xff0c;应用场景&#xff0c;优势 2、是什么&#xff1a;vuex是一个vue的状态管理工具&#xff0c;状态就是数据 (简述&#xff1a;vuex是一个插件&#xff0c;可以帮我们管理vue通用的数据) 3、场景&#xff1a; (1)…

物理隔离条件下,如何安全高效地进行内外网文件导入导出?

内外网文件导入导出通常指的是在内部网络&#xff08;内网&#xff09;和外部网络&#xff08;外网&#xff09;之间传输文件的过程。这在企业环境中尤其常见&#xff0c;因为内部网络通常包含敏感数据&#xff0c;而外部网络&#xff08;如互联网&#xff09;则允许更广泛的访…

基于 Spark 的电商用户行为分析系统

摘 要 针对传统的大数据处理框架 Hadoop 在执行计算任务时抽象层次低、运行速度慢、无法实时计算等问题, 提出了一种基于内存的分布式框架 Spark 作为计算引擎的方法。结合 Hadoop 框架中的分布式文件存储 技术,设计了一个电商用户行为分析系统。首先根据数据特点建立用户画…

生成对抗网络(GANs):技术演化与广泛应用

目录 前言1 技术原理1.1 基本构成1.2 训练过程1.3 数学原理 2 应用领域2.1 图像合成2.2 数据增强2.3 风格迁移2.4 超分辨率 结论 前言 生成对抗网络&#xff08;GANs&#xff09;&#xff0c;自2014年由Ian Goodfellow及其同事首次提出以来&#xff0c;已经引起了广泛的关注和…

JavaScript进阶:js的一些学习笔记-4

文章目录 1. 拷贝1. 浅拷贝2. 深拷贝 2. 异常处理 1. 拷贝 这里指的拷贝是指拷贝引用类型的数据(对象) 1. 浅拷贝 拷贝对象&#xff1a;Object.assign() 或者 {…obj} 展开运算符 const obj {name:liuze,age:23 } const o {...obj}; o.age 22; console.log(o); console.…

Sparse Convolution 讲解

文章目录 1. 标准卷积与Sparse Conv对比(1)普通卷积(2) 稀疏卷积(3) 改进的稀疏卷积(subm)2 Sparse Conv 官方API3. Sparse Conv 计算3. 1 Sparse Conv 计算流程3. 2 案例3.2.1 普通稀疏卷积3.2.2 subm模式的稀疏卷积3D点云数据非常稀疏,尤其体素化处理后(比如200k的点放…

【spring】@PropertySource 注解学习

PropertySource介绍 PropertySource是Spring框架中的一个注解&#xff0c;主要用于Java配置类中&#xff0c;用于引入额外的属性文件&#xff0c;以便在Spring应用上下文中使用这些属性。 在Spring 3.1引入Java配置后&#xff0c;我们可以通过Configuration注解的类和Bean注解…

独孤思维:你这样做副业,招人烦

01 做副业的&#xff0c;大家都不傻。 不要加群就bao粉。 只会招人烦。 不能靠价值吸引来的粉丝&#xff0c;你想想他对你的忠诚度能有多少&#xff1f; 无非是快速灌流量&#xff0c;得到心理上的慰藉。 02 我的主业&#xff0c;是互联网医疗。 最近&#xff0c;上线了…

Windows11企业版安装WSL2和Ubuntu发布版(避坑)

背景 win10企业版升级win11企业版后&#xff0c;安装WSL2&#xff0c;最后安装WSL的Ubuntu发布版&#xff0c;尝试网上各种方法&#xff0c;还是出现文章第三节所写的问题&#xff0c;差点被这问题搞放弃了&#xff0c;全网少有针对这个问题的答案&#xff0c;有也不顶用&…

【python】自动化工具Selenium与playwright去除webdriver检测

对这个世界如果你有太多的抱怨 跌倒了就不敢继续往前走 为什么人要这么的脆弱 堕落 请你打开电视看看 多少人为生命在努力勇敢的走下去 我们是不是该知足 珍惜一切 就算没有拥有 &#x1f3b5; 周杰伦《稻香》 # -*- coding:utf-8 -*- import timefrom s…