数据库-使用in的子查询,any,all修改的比较运算符,exists的子查询

1.使用in的子查询

1.1 概念

  • 过in引入的子查询结果是包含零个值或多个值得列表,子查询返回结果之后,外部查询将利用这些结果

1.2 in列表

查询在sc表中选修了课程的学生的信息
select *from student   where sno in (select distinct sno from sc) 
//子查询得到学生的学号,外部查询根据学号找到学生

1.3 not in

查询没有选修过任何课程的学生的信息
select * from student   where  sno not inselect distinct sno from sc)
//not in表示字段的值不在后面的子查询返回到结果中

2.用any,all修改的比较运算符

2.1 概念

  • 可以用all或者any修改引入子查询的比较运算符。
  • some是与any等效的ISO标准,以>比较运算符为例,>all表示大于每一个值,表示大于最大值。
  • 例如,>all(1,2,3)表示大于3,>any表示至少大于一个值,即大于最小值,因此>any(1,2,3)表示大于1

2.2 实例

在教师列表中,检索比任何一个女教师年龄都大的男教师的信息 
select *from teacher where tsex='男' and tage>allselect tage from teacher where tsex='女')子查询得到每一位女教师的年龄,外层查询使用“>all”的语法,即比集合中最大值还大

3.使用exists的子查询

  • 使用exists关键字引入子查询后,子查询的作用就相当于进行存在测试
  • 外部查询的where子句测试子查询返回的行是否存在
  • 子查询实际上不产生任何数据,它只返回TRUE或flase值

3.1 exists

查询选修了B004课程的学生的基本信息
select *from student where existsselect *from sc where   sno=student.sno  and cno='B004'

3.2 not exists

查询没有选修X001课程的学生的基本信息
select *from student where not existsselect *from sc where   sno=student.sno  and cno='X001'

3.3 where exists

查询与王国在同一个专业学习的所有学生的基本信息
select sno,sname,smajor from student s1 where exists (select *from student s2 where s1.smajor=s2.smajor and s2.name='王国')
posted @   东血  阅读(478)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律

本站勉强运行 1780 天 21 小时 49 分 54 秒

目录导航
目录导航
数据库-使用in的子查询,any,all修改的比较运算符,exists的子查询
1.使用in的子查询
1.1 概念
1.2 in列表
1.3 not in
2.用any,all修改的比较运算符
2.1 概念
2.2 实例
3.使用exists的子查询
3.1 exists
3.2 not exists
3.3 where exists
发布于 2020-05-27 14:25
点击右上角即可分享
微信分享提示