实验八
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
- ~~实验五 敬请期待~~
|
||||
- [实验六](实验六.sql)
|
||||
- [实验七](实验七.sql)
|
||||
- [实验八](实验八.sql)
|
||||
|
||||
## BB空间📺
|
||||
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
-- 1、嵌套查询(注意使用ANY、ALL和EXISTS)
|
||||
-- (1)使用IN运算的简单嵌套查询
|
||||
USE 学生管理;
|
||||
SELECT * FROM 课程表 WHERE 责任教师 IN ('T001','T002');
|
||||
|
||||
-- (2)使用NOT IN运算的简单嵌套查询
|
||||
SELECT * FROM 课程表 WHERE 责任教师 NOT IN ('T001','T002');
|
||||
|
||||
-- (3)使用关系运算(如等于)的简单嵌套查询
|
||||
SELECT * FROM 课程表 WHERE 学时 = 64;
|
||||
|
||||
-- (4)使用ANY或SOME的简单嵌套查询
|
||||
SELECT * FROM 课程表 WHERE 学时 = ANY(
|
||||
SELECT MAX(学时) FROM 课程表
|
||||
);
|
||||
|
||||
-- (5)使用ALL的简单嵌套查询
|
||||
SELECT * FROM 教师表 WHERE 工资 > ALL(
|
||||
SELECT AVG(工资) FROM 教师表
|
||||
);
|
||||
|
||||
-- (6)使用连接查询院系名称含“计算机”、职称为教授、所负责教程为必修课的教师姓名、职称、课程名称和课程学时等信息
|
||||
SELECT 教师表.姓名,教师表.职称,课程表.课程名称,课程表.学时
|
||||
FROM 教师表
|
||||
JOIN 院系表 ON 院系表.负责人=教师表.姓名
|
||||
JOIN 课程表 ON 课程表.责任教师=教师表.教师编号
|
||||
WHERE 院系表.名称 LIKE '%计算机%'
|
||||
AND 教师表.职称='教授'
|
||||
AND 课程表.课程性质='必修课';
|
||||
|
||||
-- (7)使用EXISTS的嵌套查询
|
||||
SELECT * FROM 课程表 WHERE EXISTS(
|
||||
SELECT 平均成绩 FROM 学生表 WHERE 平均成绩 > 90
|
||||
);
|
||||
|
||||
-- (8)使用NOT EXISTS的嵌套查询
|
||||
SELECT * FROM 课程表 WHERE NOT EXISTS(
|
||||
SELECT 平均成绩 FROM 学生表 WHERE 平均成绩 < 60
|
||||
);
|
||||
|
||||
-- 2、汇总和分组查询
|
||||
-- (1)使用COUNT统计数目的查询
|
||||
SELECT COUNT(*) FROM 学生表;
|
||||
|
||||
-- (2)使用SUM计算合计的查询
|
||||
SELECT SUM(工资) FROM 教师表;
|
||||
|
||||
-- (3)一次完成求和、计数、计算平均值的查询
|
||||
SELECT SUM(工资),COUNT(*),AVG(工资) FROM 教师表;
|
||||
|
||||
-- (4)查询所有课程的成绩都大于60分的学生的平均分最高的学生信息
|
||||
SELECT TOP 1 学生表.*
|
||||
FROM 学生表
|
||||
JOIN (
|
||||
SELECT 学号, AVG(成绩) AS 平均分
|
||||
FROM 选课表
|
||||
GROUP BY 学号
|
||||
HAVING MIN(成绩) > 60
|
||||
) AS 成绩表 ON 学生表.学号 = 成绩表.学号
|
||||
ORDER BY 成绩表.平均分 DESC;
|
||||
|
||||
-- (5)查询数据库课程的成绩大于70分的、所有课程平均分最高的学生信息
|
||||
SELECT TOP 1 学生表.*
|
||||
FROM 学生表
|
||||
JOIN (
|
||||
SELECT 学号, AVG(成绩) AS 平均分
|
||||
FROM 选课表
|
||||
WHERE 课程编号 = (
|
||||
SELECT 课程编号
|
||||
FROM 课程表
|
||||
WHERE 课程名称 LIKE '%数据库%'
|
||||
) AND 成绩 > 70
|
||||
GROUP BY 学号
|
||||
) AS 成绩表 ON 学生表.学号 = 成绩表.学号
|
||||
ORDER BY 成绩表.平均分 DESC;
|
||||
|
||||
-- (6)查询每个学生的平均成绩
|
||||
SELECT 学号, AVG(成绩) AS 平均成绩
|
||||
FROM 选课表
|
||||
GROUP BY 学号;
|
||||
|
||||
-- (7)查询每个学生的所有成绩的最高成绩、最低成绩、平均成绩和所考课程的门数
|
||||
SELECT 学号,
|
||||
MAX(成绩) AS 最高成绩,
|
||||
MIN(成绩) AS 最低成绩,
|
||||
AVG(成绩) AS 平均成绩,
|
||||
COUNT(课程编号) AS 课程门数
|
||||
FROM 选课表
|
||||
GROUP BY 学号;
|
||||
Reference in New Issue
Block a user