概念
- 什么是嵌套查询?简单说就是一个查询语句中包含着另一个查询语句。
- 子查询返回值有几种可能?3种,分别是返回空数据、返回1条数据、返回多条数据。不同的返回值用不同的关键字连接子查询。
- 子查询写在哪里?写在外层查询中 where 的后面。
in 子查询
语法
1 | select * from 表1 |
知识点
- 当子查询的返回值有多条数据时,可以用 in 关键字判断公共字段是否在子查询的返回值里。
- 如果子查询的返回值只有一条记录,可以使用 = 取代 in
习题
查询李勇同学所选课程的课程号及成绩。
1
2
3select * from sc where sno = (
select sno from student where sname = '李勇'
);查询姓“王”的学生所学的课程名称。
1
2
3
4
5select cname from course where cno in (
select cno from sc where sno in (
select sno from student where sname like '%王%'
)
)
比较子查询
语法
1 | select * from 表1 |
知识点
- 关键字 All:表达式要与子查询结果集中的每个值都进行比较,当表达式与每个值都满足比较的关系时.才返回TRUE,否则返回FALSE。
- 关键字 SOME 或 ANY 是同义词,表示表达式只要与子查询结果集中的某个值满足比较的关系时,就返回TRUE,否则返回FALSE。
- 上面这几个关键字相当于逻辑元算中的 and 和 or。
习题
查询学号比“刘晨”同学大,而出生日期比她小的学生姓名。
查询出生日期大于所有女同学出生日期的男同学的姓名及系别。