【mysql学习07】

子查询

子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从mysql14.1开始引入。
sql中子查询的使用大大增强了select查询的能力,因为很多时候需要从结果中获取数据,或者需要从同一个表中先计算得出一个数据结果,然后与这个数据结果(可能是标量,可能是某个集合)进行比较。
在这里插入图片描述
解决方式一:
在这里插入图片描述
在这里插入图片描述
解决方式二:
在这里插入图片描述
解决方式三:
在这里插入图片描述
关于子查询:
在这里插入图片描述

子查询的分类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
相关子查询与不相关子查询
通俗理解就是相关子查询:内查询一般和外查询存在”的“的关系,不相关就不存在。

单行子查询

单行子查询就是内查询返回一条结果记录

单行比较操作符

在这里插入图片描述
在这里插入图片描述

HAVING中的子查询

1.首先执行子查询
2.向主查询中的HAVING子句返回结果

在这里插入图片描述
在这里插入图片描述

CASE中的子查询

例题及用法

在这里插入图片描述
在这里插入图片描述

子查询的空值问题以及非法使用

1.空值问题
也就是说,如果子查询的结果在表中无数据(即子查询不返回任何行),那么,即使不会报错,也不会出现任何值(包括null)。
在这里插入图片描述
该公司中无Hass这个人,所以查询不到数据。

2.非法使用
即使使用单行比较操作符的时候,子查询返回的数据不止一条,就会报错等等。

错误:Subquery return more than 1 row。

多行子查询

多行子查询也称为集合比较子查询,内查询返回多行,使用多行比较操作符。

多行比较操作符

在这里插入图片描述
其中ANY和ALL的区别要注意。
含义上的区别
通俗说,就是假设五个美女追你,ANY就是你随便挑一个,ALL就是你全都要。
代码上的区别:
ANY(任一)
在这里插入图片描述
ALL(任意)
在这里插入图片描述
将查询出来的多个结果当作一张表
给处理某些复杂的情况提供了思路,可以嵌套函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

空值问题

若内查询中有空值,需要考虑是否要去除这个空值,否则可能会得不到数据。
在这里插入图片描述

相关子查询

在这里插入图片描述
在这里插入图片描述
结论:在select中,除了group by 和limit之外,都可以写子查询
在这里插入图片描述

exists与not exists关键字

在这里插入图片描述
在这里插入图片描述

相关更新与删除

1.相关更新
在这里插入图片描述
在这里插入图片描述
2.相关删除

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值