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.mfbz.cn/a/460730.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CSS扩展选择器

文章目录 1. 并集选择器2. 交集选择器3. 后代选择器4. 子代选择器5. 兄弟选择器5.1. 相邻兄弟选择器5.2. 通用兄弟选择器 6. 属性选择器7. 伪类选择器7.1. 动态伪类7.2. 结构伪类7.3. 否定伪类 8. 伪元素选择器9. Google 改进案例 1. 并集选择器 选中多个选择器对应的元素。一…

如何在Linux上使用git远程上传至gitee托管(add-commit-push指令详解)

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

Xpay源支付2.8.8免授权聚合免签系统

产品介绍 XPay是专为个人站长打造的聚合免签系统&#xff0c;拥有卓越的性能和丰富的功能。采用全新轻量化的界面UI&#xff0c;让您可以更加方便快捷地解决知识付费和运营赞助的难题。同时&#xff0c;它基于高性能的ThinkPHP 6.1.2 Layui 2.8.10 PearAdmin架构&#xff0c…

面向对象(下)

目录 01、static1.1、static的使用1.2、static应用举例1.3、单例(Singleton)设计模式 02、main方法的语法03、类的成员之四&#xff1a;代码块04、关键字&#xff1a;final05、抽象类与抽象方法5.1、多态的应用&#xff1a;模板方法设计模式(TemplateMethod) 06、接口(interfac…

使用reprepro+nginx搭建apt服务器

目录 项目背景 项目要求 项目开发过程 1、apt服务器的搭建 2、实现自定义指定源文件列表来实现apt update更新 3、实现软件启动时自动更新 4. source.list中镜像源地址的格式 项目开发的难点/坑点 总结 项目背景 前面写过一篇“利用Nginx搭建一个apt服务器”&#xff…

异次元发卡源码系统/荔枝发卡V3.0二次元风格发卡网全开源源码

– 支付系统&#xff0c;已经接入易支付及Z支付免签接口。 – 云更新&#xff0c;如果系统升级新版本&#xff0c;你无需进行繁琐操作&#xff0c;只需要在你的店铺后台就可以无缝完成升级。 – 商品销售&#xff0c;支持商品配图、会员价、游客价、邮件通知、卡密预选&#…

双线性插值缩放算法原理以及matlab与verilog的实现(二)

系列文章目录 双线性插值缩放算法原理以及matlab与verilog的实现&#xff08;一&#xff09; 文章目录 系列文章目录前言一、前提回顾二、FPGA实现步骤2.1 找到源图像四个像素点求目标像素点2.2 FPGA实现步骤2.3 总体框架2.4 ROM缓存模块2.5 VGA模块2.6 双线性算法模块 三、下…

【AI+应用】一步步搭建聊天机器人搭配多种国内外大模型以及api接口调用

如果你看过我之前写的一篇文章 【AI应用】怎么快速制作一个类chatGPT套壳网站&#xff0c; 你可能顺利地使用chatGPT、Gemini&#xff0c; 用得很happy。 突然有一天&#xff0c;你发现一些网站&#xff0c;除了chatGPT、Gemini &#xff0c;还可以切换使用国内外其他的大模型…

【原创】一文读懂RAG的来源、发展和前沿

检索增强生成(Retrieval Augmented Generation&#xff0c;RAG)结合了检索 (Retrieval) 和生成 (Generation) 两个过程&#xff0c;旨在提高机器生成文本的相关性、准确性和多样性。RAG通过在生成文本输出之前先检索大量相关信息&#xff0c;然后将这些检索到的信息作为上下文输…

练习题手撕总结

基础篇 1.基础知识&#xff08;时间复杂度、空间复杂度等&#xff09; 2.线性表&#xff08;顺序表、单链表&#xff09; 3.双链表、循环链表 4.队列 5.栈 6.递归算法 7.树、二叉树&#xff08;递归、非递归遍历&#xff09; 8.二叉搜索树&#xff08;BST&#xff09; 9.二分查…

FPGA静态时序分析与约束(三)、读懂vivado时序报告

系列文章目录 FPGA静态时序分析与约束&#xff08;一&#xff09;、理解亚稳态 FPGA静态时序分析与约束&#xff08;二&#xff09;、时序分析 文章目录 系列文章目录前言一、时序分析回顾二、打开vivado任意工程2.1 工程布局路由成功后&#xff0c;点击vivado左侧**IMPLEMENT…

浅易理解:非极大抑制NMS

什么是非极大抑制NMS 非极大值抑制&#xff08;Non-Maximum Suppression&#xff0c;简称NMS&#xff09;是一种在计算机视觉和图像处理领域中广泛使用的后处理技术&#xff0c;特别是在目标检测任务中。它的主要目的是解决目标检测过程中出现的重复检测问题&#xff0c;即对于…

家具工厂5G智能制造数字孪生可视化平台,推进家具行业数字化转型

家具制造5G智能制造工厂数字孪生可视化平台&#xff0c;推进家具行业数字化转型。随着科技的飞速发展&#xff0c;家具制造业正迎来一场前所未有的数字化转型。在这场家具制造业转型中&#xff0c;5G智能制造工厂数字孪生可视化平台发挥着至关重要的作用。 5G智能制造工厂数字孪…

深度学习模型部署(十)模型部署配套工具二

上篇blog讲了trtexec和onnx_graphsurgeon两个工具&#xff0c;一个用于将onnx转化为trt模型&#xff0c;另一个用于对onnx模型进行修改。这篇blog讲polygraphy和nsight systems&#xff0c;前者用于进行模型优化以及结果验证&#xff0c;后者用于性能分析。 polygraph polygra…

sqllab第二十三关通关笔记

知识点&#xff1a; mysqli_query() 返回值为资源型或布尔型如果内容为查询语句则返回资源型数据&#xff1b;如果内容为插入、更新、删除等语句则返回布尔类型结果mysql_fetch_array() 从结果集中取出一行作为关联数组或数字数组输入内容为指定查询的结果集单引号闭合绕过联…

hololens2发布unity设置

生成vs工程再向hololens发布时&#xff0c; Architecture选X64或ARM64都可以成功发布

爬虫3_爬取翻页URL不变的网站

之前实现了对大学排数据爬取&#xff1a;爬虫2_2019年549所中国大学排名. 近期复现代码&#xff0c;发现原网站升级&#xff0c;在翻页时&#xff0c;发现URL不改变&#xff0c;修改代码&#xff0c;使用网页自动化工具selenium实现对该类网站数据获取。 #-*- coding: UTF-8 -…

【物联网】Modbus 协议及Qinghub物联网平台应用

Modbus 协议简介 QingHub设计器在设计物联网数据采集时不可避免的需要针对Modbus协议的设备做相关数据采集&#xff0c;这里就我们的实际项目经验分享Modbus协议 你可以通过QingHub作业直接体验试用&#xff0c;也可以根据手册开发相应的代码块。 qinghub项目已经全面开源。 …

MC78L05ACDR2G线性稳压器芯片中文资料规格书PDF数据手册引脚图参数图片价格

产品概述&#xff1a; MC78L00A系列线性稳压器价格便宜&#xff0c;易于使用&#xff0c;适用于各种需要最高100mA的调节电源的应用。与大功率MC7800和MC78M00系列一样&#xff0c;这款稳压器也提供内部电流限制和高温关断&#xff0c;因此非常坚固耐用。在很多应用中&#xf…

MediaBox音视频终端SDK已适配鸿蒙星河版(HarmonyOS NEXT)

2024年1月&#xff0c;HarmonyOS NEXT 鸿蒙星河版系统开发者预览版开放申请&#xff0c;该系统将只能安装为鸿蒙开发的原生应用&#xff0c;而不再兼容安卓应用。对此&#xff0c;阿里云MediaBox音视频终端SDK产品已实现功能的鸿蒙化迁移和重构&#xff0c;全面适配鸿蒙系统Har…
最新文章