数据库-子查询

本文介绍了数据库查询中的子查询概念,强调其与连接查询的区别。子查询允许在查询中嵌套查询,适用于跨表或本表查询。通过示例解释了如何使用子查询筛选出比张三年龄大的学生,以及如何处理多表字段的查询。此外,还提供了三个练习题,分别涉及未参加特定课程考试的学生、平均分高于85的课程以及同时参加两门课程的学生的查询方法。

子查询是数据库的另一种查询手段,它跟连接查询不一样,连接查询只适合跨表查,子查询可以跨表查询,也可以在本表查询。但是如果想展示多个表的字段,那必须是连接查询,子查询一般情况下不能展示多表字段。

1、表格数据

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、详解

子查询是什么意思呢,其实说白了就是“查询里边有查询”,例如,我想查询比张三年龄大的学生名和年龄
我们来思考一下,我想要的是学生名和年龄,但是有条件,条件是比“张三”年龄大的,所以先要找出张三的年龄,然后再拿着张三的年龄找到年龄列,挨个比较,找比它大的。
通过上边的分析我们知道,我们总共有2个步骤:
步骤1:找到张三的年龄
步骤2:以张三的年龄去遍历比较

如果我们直接去表里看张三的年龄,例如25岁,然后直接写sql,那就是:select 姓名,年龄 from 学生表 where 年龄>25
但是如果表里边有成千上万条数据,那是没有办法直接看出来张三的年龄的,所以,我们得先找出name='张三’的年龄,然后再进行下一步,所以sql就出来了。如下:
在这里插入图片描述
通过上边的sql我们能看出来,“age>”后边是个查询语句,这个查询语句找出来的是age,谁的age呢,条件里边写清楚了,是sname='张三’的。所以,这就呼应上了我们前边说的,子查询就是**“查询里边有查询”**

注意:
1)里边的查询(找张三年龄的sql)需要用小括号括起来,表达一个整体的意思,数据库里边是以括号表示层级关系的,所以括号一定要对。
2)里边的查询(找张三年龄的sql)查询的展示字段是年龄,不能是星号,因为外边的查询是以年龄为条件进行比较的。如果展示字段是星号的话,那就是所有字段,没办法跟年龄进行对比。

3、练习

例1:
查询没有参加1号课程考试的学生名
在这里插入图片描述
分析:
查找的学生名,用select 姓名 from 学生表
条件是没有参加1号考试的,我们可以先把参加了1号考试的人找出来,再用排除法把这一部分人排除就可以了。需要注意的是,参加1号考试的学生不止1个,出来的结果是个列表,所以这里不能用等于号“=”。
in:在…范围
not in:不在…范围
等于号:精确匹配

例2:
平均分大于85的课程名
在这里插入图片描述
分析:
找课程名:也就是select 课程名 from 课程表
条件:平均分大于85的,谁的平均分啊,根据题意是课程的,所以需要用到课程分组,group by 课程号 having avg(成绩)>85
把平均分大于85分的课程号找出来,再拿着这个课程号去课程表里边找名就可以了

例3:
同时参加了1号和2号课程考试的学生名
在这里插入图片描述
分析:
这个套了2层子查询。
找学生名:也就是select 学生名 from 学生表
条件:即参加了1号考试,又参加了2号考试。那么课程号=1 and 课程号=2,可以吗?答案是不可以,因为从这句sql的翻译来看,要一个数即等于1又等于2,没有这样的数字,所以不能这么写。那么我们要怎么写呢?我们可以先把参加了1号课程考试的学生找出来,再在这一部分学生中找参加了2号课程考试的,把这一部分人的学号找出来以后,再拿着学号去学生表里边找名字就可以了。

内容概要:本文系统梳理了多个科研领域的前沿研究与技术实现,重点涵盖FDTD方法中的完美匹配层(PML)研究,以及Matlab/Simulink在电磁、电力、控制、通信、信号处理、图像处理、路径规划、能源系统优化等领域的仿真与算法实现。文中列举了大量基于Matlab和Python的科研案例,如风电功率预测、负荷预测、无人机三维路径规划、电池系统故障诊断、雷达模拟、通信编码、微电网优化调度等,强调结合智能优化算法(如粒子群、遗传算法、深度学习等)提升系统性能。同时,提供了丰富的代码资源与仿真模型,涵盖永磁同步电机控制、逆变器设计、多智能体任务配、虚拟电厂调度等复杂系统,助力科研人员快速开展复现实验与创新研究。; 适合人群:具备一定编程基础,熟悉Matlab/Python工具,从事电气工程、自动化、通信、人工智能、新能源、控制科学等相关领域研究的研发人员及研究生。; 使用场景及目标:① 学习实现FDTD仿真中的PML边界条件以有效抑制数值反射;② 掌握Matlab/Simulink在多物理场建模、控制系统设计与优化算法中的综合应用;③ 借助提供的代码资源完成科研复现、课程设计、竞赛项目或工程原型开发; 阅读建议:此资源以科研实战为导向,不仅提供理论方法,更强调代码实现与仿真验证。建议读者结合自身研究方向,按目录顺序查阅相关模块,下载配套代码进行调试与二次开发,以达到学以致用、融会贯通的目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值