当前位置: 首页 > news >正文

Mysql从入门到精通day5————子查询精讲

本文主要讲述子查询的几种方法,读者注意体会它们的不同场合的适用情况及功能,本篇文章也融入了小编实践过程遇到的坑,希望读者不要再踩坑

一.带IN关键字的子查询

in关键字可以检测结果集中是否存在某个特定的值,检测成功则执行外部查询

这里我们使用之前的文章已经创建过的图书借阅表和图书信息表,先查看两表中的图书id部分,结果如下图:
在这里插入图片描述
下面的语句的意思是通过in关键字从图书借阅表中查询图书id,前提条件是这个id在图书信息表也出现过,然后返回图书id,图书名,作者,价格可以看出上图中的图书信息表中的id有4个,但是查询记录只有三条即两表的公共部分
在这里插入图片描述

二.带exists关键字的子查询

使用exists关键字时,内层查询不返回查询记录而是返回一个布尔值,内层查询到满足条件的记录返回true然后外层语句进行查询否则外层语句不执行查询

在这里插入图片描述
如图,内层查询两表的公共id外层返回查询到的记录

三.带比较运算符的子查询

为了使读者更直观了解比较运算符查询我们新建了两个表为图书归还表和管理员信息表
在这里插入图片描述
在这里插入图片描述
然后我们插入数据包含姓名,年龄,部门
在这里插入图片描述
查看插入的结果
在这里插入图片描述
使用>号查询booknumber大于1的所有记录,由上图可知只有一条记录
在这里插入图片描述
下图是我们查询booknumber>=1的结果,limit 1限制结果为1条,不加会报错
在这里插入图片描述

我们注意下图有一条报错,报错原因是查询到的记录不止一条,有多条记录,这也是比较运算符的一个易错点,一般我们只需要满足条件的一条记录比如最高的或者最低的才使用比较运算符,如果需要多条结果则使用ALL/ANY关键字,下面会讲,这是小编实践发现的

在这里插入图片描述
我们改进的报错措施有三条:

1.使用limit 1限制结果为1条
2.使用ALL/ANY关键字显示多条记录
3.使用join on外连接查询

在这里插入图片描述
我们要想查询图书归还涉及的管理员信息可以采用in关键字,结果如上,所以关键字是需要活学活用的

四.带ANY和ALL关键字的子查询

第一步:我们先建立一个数据库,并创建一个学生成绩的表,包含学生的班级,姓名,班号
在这里插入图片描述
第二步:填充表数据并查看
插入数据代码:

insert into tb_student(classid,name,score) values
(13,'顾大可',60),
(14,'王三水',65),
(15,'王四火',80),
(13,'王光军',70);

插入结果如下图:
在这里插入图片描述
这里的classid的第一位数字表示年级,第二位数字表示班级,如13表示一年级三班

第三步:使用ANY关键字查询比一年级三班最低分高的所有学生的信息
语句如下:

select *from tb_student
where score>any(select score from tb_student where classid=13);

查询结果如下图,可以看出一年级三班的学生最低分是60分,所以比60分高的数据都被查了出来
在这里插入图片描述
总结:ANY关键字只要满足内层查询语句返回的结果中的任意一个就可以通过该条件就可以执行外层语句。相当于逻辑运算符中的或运算符

第四步:使用ALL关键字查询比一年级三班最高分高的所有学生的信息
语句如下:

select *from tb_student
where score>all(select score from tb_student where classid=13);

查询结果如下图,可以看出一年级三班的学生最高分是70分,所以比70分高的数据只有80被查了出来
在这里插入图片描述
总结:ALL关键字只要满足内层查询语句返回的所有结果才可以执行外层语句,相当于逻辑运算符中的与运算符

误区警示:使用select语句时一定要加from,切记一定要加!!!不加不会报错但会导致灾难性的结果!!!

这是小编在实践过程中忘了加from才发现的误区,但是奇怪的是系统没有报错,只是查询结果与正确结果相差很大,看下图:
在这里插入图片描述
这是使用ALL关键字不加from的结果,比正确结果多了一条记录

再来看一下使用ANY关键字不加from的结果

在这里插入图片描述
更是离了大谱了,直接成空集了,演都不演了

小编的教训希望能引起读者的高度重视

相关文章:

  • 人工智能的未来:从弱 AI 到通用人工智能(AGI)
  • 常用的卷积神经网络及Pytorch示例实现
  • AI+制造的破局之战(上):从技术爆发到价值穿透,谁将率先定义“智能体时代”?
  • 网络架构搭建中的 QinQ 与端口安全策略
  • python采集淘宝拍立淘按图搜索API接口,json数据示例参考
  • Java中用Stream流取出分组后每组中最大值对应的对象
  • ubuntu开启黑屏现象解决
  • Linux上位机开发实践(从MPP平台到产品)
  • AI大模型从0到1记录学习 day10
  • SvelteKit 最新中文文档教程(16)—— Service workers
  • 【Unity】记录TMPro使用过程踩的一些坑
  • SpringBoot整合LogStash,LogStash采集服务器日志
  • vue 4 组件通信
  • C语言字符串处理相关函数详解
  • T11 TensorFlow入门实战——优化器对比实验
  • NE 综合实验3:基于 IP 配置、链路聚合、VLAN 管理、路由协议及安全认证的企业网络互联与外网访问技术实现(H3C)
  • Spring Data JPA方法命名规则的完整总结,按场景分类整理
  • 解决在pycharm下载的python在cmd命令行无法识别的问题
  • 蓝桥杯最后十天冲刺day 1
  • mysql表连接方式
  • 网站 建设 流行 数据库/seo诊断工具网站
  • 运营网站费用/情感营销案例
  • 佛山网站推广建设/黑帽seo培训网
  • wordpress仿站视频/企业网站建设案例
  • 做暧暧视频免费视频网站/核心关键词举例
  • 洛阳 网站建设 大师字画/微信群二维码推广平台