SELECT 学生.姓名,课程名,成绩 FROM 教师,开课,课程,学习,学生 WHERE 教师姓名='王刚' AND 教师.教师号=开课.教师号 AND 开课.课程号=课程.课程号 AND 课程.课程号=学习.课程号 AND 学生.学号=学习.学号 AND 成绩>90;
2.2.2 求选修了“王刚”老师所授全部课程的学生姓名和学院名称;(姓名,学院名称)
1 2 3 4 5 6 7 8 9 10
SELECT 姓名,学院名称 FROM 学生,学院 WHERE 学生.学院代码=学院.学院代码 AND NOT EXISTS (SELECT * FROM 教师,开课 WHERE 教师.教师姓名='王刚' AND 教师.教师号=开课.教师号 AND NOT EXISTS (SELECT * FROM 学习,课程,学生 AS S WHERE S.学号=学习.学号 AND 课程.课程号=学习.课程号));
2.2.3 求没有选修课程“软件工程”的学生学号和姓名;(学生学号,姓名)
1 2 3 4 5 6
SELECT 学生.学号,姓名 FROM 学生 WHERE NOT EXISTS (SELECT * FROM 学习,课程 WHERE 学生.学号=学习.学号 AND 课程.课程号=学习.课程号 AND 课程.课程名='软件工程');
2.2.4 求至少选修了两门课程的学生学号;(学号)
1 2 3
SELECT 学号 FROM 学习 GROUP BY 学号 HAVING COUNT(课程号)>1;
2.2.5 求课程“经济学”不及格学生姓名和考试成绩;(姓名,成绩)
1 2 3 4 5
SELECT 姓名,成绩 FROM 学生,学习,课程 WHERE 学生.学号=学习.学号 AND 课程.课程号=学习.课程号 AND 课程.课程名='经济学' AND 成绩<60;
2.2.6 求至少选修了与学号“T06” 同学选修的课程相同的学生学号;(学号)
1 2 3 4 5 6 7 8
SELECT DISTINCT 学号 FROM 学习 AS SC1 WHERE NOT EXISTS (SELECT * FROM 学习 AS SC2 WHERE SC2.学号='T06' AND NOT EXISTS (SELECT * FROM 学习 AS SC3 WHERE SC1.学号=SC3.学号 AND SC2.课程号=SC3.课程号));
2.2.7 求至少选修了“C3,C4”两门课程的学生姓名和学院名称;(姓名,学院名称)
1 2 3 4 5 6 7 8 9
SELECT 姓名,学院名称 FROM 学生,学院 WHERE 学生.学院代码=学院.学院代码 AND NOT EXISTS (SELECT * FROM 课程 WHERE 课程号 IN ('C3','C4') AND NOT EXISTS (SELECT * FROM 学习 WHERE 学生.学号=学习.学号 AND 学习.课程号=课程.课程号));
2.2.8 查询“王石”同学没有选修的课程号和课程名; (课程号,课程名)
1 2 3 4 5
SELECT 课程号,课程名 FROM 课程 WHERE 课程号 NOT IN (SELECT 课程号 FROM 学习,学生 WHERE 学生.学号=学习.学号 AND 姓名='王石');
2.2.9 查询没有被任何学生选修的课程的课程号;(课程号)
1 2 3 4
SELECT 课程号 FROM 课程 WHERE 课程号 NOT IN (SELECT 课程号 FROM 学习 WHERE 学习.学号=课程.课程号);
2.2.10 求选修了全部课程的学生姓名;(姓名)
1 2 3 4 5 6 7
SELECT 姓名 FROM 学生 WHERE NOT EXISTS (SELECT * FROM 课程 WHERE NOT EXISTS (SELECT * FROM 学习 WHERE 学习.学号=学生.学号 AND 课程.课程号=学习.课程号));
2.2.11 查询各学院课程“经济学”的平均分,并按照成绩从高到低的顺序排列;(学院名称,平均分)
1 2 3 4 5 6 7
SELECT 学院名称,AVG(成绩) AS 平均分 FROM 学院,学习,学生,课程 WHERE 学生.学院代码=学院.学院代码 AND 学习.学号=学生.学号 AND 学习.课程号=课程.课程号 AND 课程名='经济学' GROUP BY 学院名称 ORDER BY AVG(成绩) DESC;
SELECT 课程.课程号,课程.课程名,教师.教师姓名 FROM 课程,教师,开课 WHERE 课程.学时 BETWEEN 30 AND 45 AND 教师.教师号=开课.教师号 AND 开课.课程号=课程.课程号;
2.2.14 检索选修课程“经济学”的最高分学生的姓名;(姓名)
1 2 3 4 5 6 7 8
SELECT 姓名 FROM 学生,课程,学习 WHERE 学生.学号=学习.学号 AND 学习.课程号=课程.课程号 AND 课程.课程名='经济学' AND 学习.成绩>=ALL (SELECT 成绩 FROM 学习,课程 WHERE 学习.课程号=课程.课程号 AND 课程.课程名='经济学');