diff --git a/README.MD b/README.MD index 194e781..2f2165c 100644 --- a/README.MD +++ b/README.MD @@ -15,6 +15,7 @@ - ~~实验五 敬请期待~~ - [实验六](实验六.sql) - [实验七](实验七.sql) +- [实验八](实验八.sql) ## BB空间📺 diff --git a/实验八.sql b/实验八.sql new file mode 100644 index 0000000..637be8f --- /dev/null +++ b/实验八.sql @@ -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 学号;