SQL Sever 子查询与嵌套查询

简介: 作者主页:https://www.couragesteak.com/

数据库表

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.带 in 的嵌套查询

查询Student表 并且 Sno 在 SC表中有

select * from Student where Sno in(select Sno from SC)

在这里插入图片描述

2.带 not in 的嵌套查询

查询学生表中 Sno在SC表不存在的学生

select * from Student 
where Sno not in
(select Sno from SC)

伪代码

查询学生表
学生表中的Sno
不在SC表中

在这里插入图片描述

3.带 some 的嵌套查询

SQL支持3中定量比较谓词:some、any 和 all。他们都是判断是否任何或全部返回值都满足搜索要求的。其中,some和any谓词是存在量的,只注重是否有返回值满足搜索要求。这两谓词含义相同,可以替换使用。

查询学生表中,年龄小于平均值的学生

select * from Student 
where Sage < some 
(select avg(Sage) from Student)

伪代码

查询学生表
年龄小于
(查询 学生表 年龄平均值)

在这里插入图片描述

4. 带 all 的嵌套查询

all 谓词的使用方法和 any 或者 some 谓词一样,也是把列值与子查询结果进行比较,但是它不要求任意结果值得列值为真,而是要求所有列的查询结果都为真,否则就不返回行。

查询课程表 并且成绩 没有 有 成绩超过 90分的课程

select * from Course
where Cno <> all
(select Cno from SC where grade > 90)

伪代码

查询课程表
不存在的课程号在
(查询有分数>90分的课程号)

在这里插入图片描述

5. 带exists的嵌套查询

exists谓词只注重子查询结果是否返回行。如果子查询返回一个或多个行,谓词返回为真值,否则为假。
exists搜索条件并不真正使用子查询的结果。他仅测试子查询是否产生任何结果。

查询没有参加考试的学生

select * from Student
where not exists
(select Sno from SC where Student.Sno = SC.Sno)

伪代码

查询学生表
不存在
(查询 Student.Sno = SC.Sno的结果)
相关文章
|
5天前
|
SQL 资源调度 数据库
深入探究SQL查询语句执行过程
深入探究SQL查询语句执行过程
16 2
|
5天前
|
SQL Java
使用java在未知表字段情况下通过sql查询信息
使用java在未知表字段情况下通过sql查询信息
12 1
|
29天前
|
SQL 存储 缓存
高基数 GroupBy 在 SLS SQL 中的查询加速
本文详细介绍了SLS中的高基数GroupBy查询加速技术。
|
28天前
|
SQL 运维 程序员
一个功能丰富的SQL审核查询平台
一个功能丰富的SQL审核查询平台
|
10天前
|
SQL
SQL: 巧妙使用CASE WHEN实现查询
文章演示了如何利用SQL中的CASE WHEN语句来有效地进行条件性聚合查询,通过具体示例展示了CASE WHEN在统计分析中的应用技巧。
25 0
|
SQL Perl 存储
PL/SQL 嵌套记录与记录集合
    将多个逻辑上不相关列组合到一起形成了PL/SQL的记录类型,从而可以将记录类型作为一个整体对待来处理。而且PL/SQL记录类型可以进行嵌套以及基于PL/SQL记录来定义联合数组,嵌套表等。
926 0
|
8天前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
3月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
68 13
|
3月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
3月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
48 6
下一篇
无影云桌面