嵌套查询
select 语句
from 语句
where 表达式 in
(
select 语句
from 语句
where 条件
)
in
多值嵌套 (……)
in
单值嵌套 >,<,<>,>=,<=,=
单值嵌套实例
员工信息表(姓名,部门编号,入职年限,学历)
部门信息表(部门编号,部门名称,负责人,部门人数)
例:查找员工“姚安娜”所在的部门名称。
SELECT 部门名称
FROM 部门信息表
WHERE 部门编号=(SELECT 部门编号
FROM 员工信息表
WHERE 姓名=‘姚安娜‘)
查询入职年限最长的员工部门名称
select 部门名称
from 部门信息表
where 部门编号=
(
select 部门编号
from 员工信息表
where 入职年限=
(
select max(入职年限)
from 员工信息表
)
)
例:将技术部的员工学历全部更改为研究生。
Update 员工信息表
Set 学历=‘研究生’
Where 部门编号=(select 部门编号
from 部门信息表
where 部门名称=‘技术部’)
Practice & Homework
1、查看XSCJ数据库中XS学生基本情况表、KC课程表、XS_KC成绩表的数据信息。(确保数据和教材第105-106页表5-13学生基本情况表、表5-14课程表、表5-15成绩表中数据一致。)
2、使用嵌套查询完成教材第107页以下操作:
(1)查找选修206号课程的学生姓名。
select 姓名 from xs where 学号 in (
select 学号 from xs_kc where 课程号='206'
);
(2)查找选修了学时数不低于60学时,课程号不以2结尾的学生学号和成绩。
select 学号,成绩 from xs_kc where 课程号 in (
select 课程号 from kc where 学时>=60 and 课程号 not like ‘%2’
);
(3)查找选修了开课学期最早的课程的学生学号和姓名。
select 学号,姓名 from xs where 学号 in (
select 学号 from xs_kc where 课程号 in (
select 课程号 from kc where 开课学期=(
select min(开课学期) from kc)
)
);
(4)查找XS_KC表中课程号206的成绩不低于课程号101的最低成绩的学生的学号。
select 学号 from xs_kc where 课程号=206 and 成绩>=(
select min(成绩) from xs_kc where 课程号='101');
(5)查找XS表中比所有计算机系的学生年龄都大的学生的学号、姓名、专业名和出生时间。
select 学号,姓名,专业名,出生时间
from xs where 出生时间<
(
select min(出生时间) from xs where 专业名='计算机'
);
在这里插入图片描述