实验八

This commit is contained in:
2024-10-29 23:11:13 +08:00
parent bd82e9893a
commit 2cc7e75fc5
2 changed files with 90 additions and 0 deletions
+1
View File
@@ -15,6 +15,7 @@
- ~~实验五 敬请期待~~
- [实验六](实验六.sql)
- [实验七](实验七.sql)
- [实验八](实验八.sql)
## BB空间📺
+89
View File
@@ -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 学号;