SQLServer子查询相关知识笔记


今天给大家介绍以下SQLServer子查询相关知识,希望对大家能有所帮助!

1、子查询概念介绍

子查询可以嵌套在SELECT、INSERT、UPDATE、DELETE语句或其他子查询语句中的查询,子查询一般作为查询中间结果集角色,子查询也称为内部查询或内部选择,包含子查询的语句称为外部查询或外部选择。根据可用系统内存和查询中其他表达式的复杂程度的不同,嵌套限制也有所不同,一般可以支持嵌套32层。个人建议尽量避免多层嵌套这样SQL语句的可读性和可维护性都会很差。使用表达式的地方一般都可以使用子查询。

2、子查询分类

单值子查询:子查询的返回值属于单个。常见与查询列、单值的查询条件使用。

多值子查询:子查询的返回值多个。常见in、exists等筛选语句使用。

3、子查询的使用场景

3.1 选择列表中使用子查询

选择列表中使用子查询作为查询结果一列值出现的。该情况下调用子查询返回的只能是单值。只能是单值子查询。

-- 查询学生姓名、年龄、总成绩select a.username,a.age,(select sum(score) 
from Score where userId=a.userId)) totalScorefrom UserInfo a
3.2 作为查询条件

-- 查询部门名称是技术部的员工信息 单值查询
select username,age,address from Emp
where deptno=(select top 1 deptno 
from DeptInfo where depName='技术部');
-- 查询产品库存大于10吨的产品列表 多值查询
select name,code from ProductInfo
where Code in (select s.code from StockInfo s where qty>20);
同样的insert、update、delete用法比较类似比如:
-- 删除库存量为0的产品
delete from ProductInfo
where Code in (select s.code from StockInfo s where qty=0);
-- 更新库存量为0的产品remark字段更新为标记
update ProductInfo set remark='标记'
where Code in (select s.code from StockInfo s where qty=0)

4、子查询和连接查询的关系

很多包含子查询的SQL语句都可以改成连接查询的形式表示,包含子查询的语句和语义上等效的无子查询的语句性能差别不大。但针对检查存在性的情况中,联接查询性能更好,数据量越大联接查询会更能体现效率。

比如:

-- 查询学生姓名、年龄、总成绩
select min(a.username),min(a.age),sum(score) totalScore
from UserInfo a 
left join Score b on a.userId=b.userId

5、包含in和exists子查询区别

in子查询:结果是包含0个或者多个值的列表,表示值的等于关系。

exists子查询:它只返回true或false。表示一种存在的行为。

通常情况下in和exist可以互换。

当子查询结果不存在NULL值时,not in和not exists得到的查询结果一样,所生成的查询计划也一样。

当in里面的值为null的情况下查询记录为0;当exists里面的值为null情况下相当于查询条件不起作用。

示例:

select name,age UserInfo where userId in (1,2,3,4);
select name,age UserInfo where exists (1,2,3,4);

说明:EXISTS与IN的使用效率的问题,通常情况下采用exists要比in效率高,但要看实际情况具体使用:IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。

6、包含比较运算符的子查询

子查询可以由一个比较运算符(=、<>、>、>=、<、!>、!<或<=)引入。使用比较运算符引入的子查询必须返回单个值而不能一个值列表。否则,SQL Server将显示一条错误信息。

IT技术分享社区

个人博客网站:https://programmerblog.xyz

文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识

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

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

相关文章

使用react的好处_react的优点是什么呀-问答-阿里云开发者社区-阿里云

首先react通过介绍新的声明式语法JSX来重新定义视图开发,优点其实官网就有,不过我可以简单说两句:第一,学会了react以及这个JSX语法,你不光可以通过react写web;也可以通过react-native写ios或者android的应…

Linux运行级详解

对于那些在DOS/Win9x/NT平台下的高级用户而言,Linux似乎是一个怪物。没有config.sys,没有 autoexec.bat,具有个人特色的机器配置不知道从何开始。 需要说明的是,很多人认为Linux是Unix的一个克隆,但是,这种…

软件:推荐八款电脑实用软件,你都用过吗?

今天给大家推荐八款电脑非常实用的软件,希望对大家能有所帮助!1、Audio Hijack Pro一款Mac 上的录音软件。它比较强大的功能是可以录制多个应用的声音,然后组合成一个结果,然后输出。2、快贴一个跨平台剪切板同步软件。你只需要简…

计算机芯片级维修包括哪些,电脑芯片级维修教程

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼让你足不出门,就能像在培训班里学芯片级维修一样,也能成为一位硬件维修工程师。给你节省上千的学费。全部资料从基础学起,没电子电路基础的朋友一样能很快的上手。让你开一家专业的计算机硬件芯片…

matlab 神经网络设计多层隐含层_数据预测之BP神经网络具体应用以及matlab代码

1.具体应用实例。根据表2,预测序号15的跳高成绩。表2 国内男子跳高运动员各项素质指标序号跳高成绩()30行进跑(s)立定三级跳远()助跑摸高()助跑4—6步跳高()负重深蹲杠铃()杠铃半蹲系数100(s)抓举()12.243.29.63.452.151402.811.05022.333.210.33.752.21203.410.970…

硬件:开机如何进BIOS,U盘启动快捷键一键查询

❤️作者主页:IT技术分享社区 ❤️作者简介:大家好,我是IT技术分享社区的博主,从事C#、Java开发九年,对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉: 数据库领域优质创作者🏆&#x…

考研计算机专业课统考吗,09考研计算机专业课统考增至4部分内容

北京考试报讯(记者 陈霄飞) 全国硕士研究生统一入学考试计算机科学与技术学科的初试专业课考试明年将实行联考。有关考研辅导专家认为,针对初试专业课调整为4部分内容的情况,计划报考该专业的考生要提早调整复习计划,适当扩大复习范围。初试专…

强制关机对电脑的伤害你有必要了解一下

不管你的电脑新旧与否,我想大家肯定都遇到过死机、卡顿无反应的情况吧,这个时候无论是电脑高手还是萌新小白同场都会采用一个相同的解决方案,对,那就是直接关机。 当然遇到这种情况,长按电源键10秒强制关机&#xff0c…

嵌入式计算机的发展阶段,嵌入式发展经历了哪四个阶段?

从上个世纪70年代单片机的出现到今天,应用,嵌入式系统少说也有近30年的历史了。可以说嵌入式系统经历了发展的4个阶段。今天小编就为大家分享一下嵌入式系统发展的4个主要阶段:1、无操作系统阶段随着各种嵌入式微处理器、微控制器的广泛纵观嵌…

testbench实例 vhdl_学写 Testbench --- 结构篇VHDL实例

testbench.v:----------------------------------------------------------------------//// File header 具体参考 编码风格专题//define MAX 20 宏定义include "driver.v"include "monitor.v包含有其他模块,如果在同一目录下可以不指定includetime…

操作系统的中断和异常

中断和异常 早期的计算机,各程序只能串行执行,系统资源利用率低 中断机制的诞生 中断的概念和作用 中断的分类

【CUDA开发】Thrust库

Thrust库从C的STL中得到灵感,将最简单的类似于STL的结构放在Thrust库中,比如STL中的vector。此外,Thrust库还包含STL中的算法和迭代器。Thrust函数库提供了两个向量容器,分别为主机和设备提供了向量类并且分别驻留在主机和设备的全…

硬件:台式机老式键盘知识科普

❤️作者主页:IT技术分享社区 ❤️作者简介:大家好,我是IT技术分享社区的博主,从事C#、Java开发九年,对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉: 数据库领域优质创作者🏆&#x…

高考填报志愿计算机操作技巧,高考志愿填报技巧经验

高考志愿填报技巧经验2020-12-30 14:43:23文/叶丹填报技巧:在所有科目考试结束后合理估分,提前参考往年录取分数线,明确各项重要的时间节点,搜集目标院校资料,查询目标院校专业近几年的位次情况,有意向的学…

npz文件转为npy_numpy的文件存储 .npy .npz 文件

1)Numpy能够读写磁盘上的文本数据或二进制数据。将数组以二进制格式保存到磁盘np.load和np.save是读写磁盘数组数据的两个主要函数,默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为.npy的文件中。import numpy as npanp.arange(5)np.save(test…

DML语句

DML语句 DML 操作是指对数据库中表记录的操作,主要包括表记录的插入(insert)、更新(update)、删除(delete)和查询(select),是开发人员日常使用最频繁的操作。…

第四十五篇、UITableViewCell高度计算

由于tableView:heightForRowAtIndexPath:方法的调用频率非常高,如果将cell高度的计算过程放在此方法中,那么效率将会非常的低,快速tableview就会出现卡顿 1、通过代码 (在模型当中只计算一次cell高度,然后在方法中直接从模型属性当…

硬件知识:台式电脑主机各种接口介绍

❤️作者主页:IT技术分享社区 ❤️作者简介:大家好,我是IT技术分享社区的博主,从事C#、Java开发九年,对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉: 数据库领域优质创作者🏆&#x…

两条曲线所围成的面积_三个视频搞定:求曲边梯形面积的思想、微积分基本定理及其几何意义、微积分理论的可视化解读、...

● 本文适合高二下学期、高三一轮复习的同学阅读。先看视频再看文字,看视频时注意利用暂停,想清楚每一步变形的依据。01曲边梯形的面积、微积分基本定理的内容视频讲解1、曲边梯形的概念及面积求法(1)曲边梯形:由直线x=a&#xff…