=====WORD完整版----可编辑----专业资料分享===== 上大学数据库上机作业 《数据库系统与应用》上机习题************************************************************************************************* 第五部分、SQL高级应用 一、做书上第十章的例题 二、利用上次上机的学生_课程数据库 1. 求选修了高等数学的学生学号和姓名。 USE 学生课程 SELECT 学生.学号,姓名,选课.课程号 FROM 学生,选课,课程 WHERE 学生.学号=选课.学号 AND 课程.课程号=选课.课程号AND 课程名='高等数学' 2. 求C1课程的成绩高于张三的学生学号和成绩。 USE 学生课程 SELECT x.学号,x.成绩 FROM 选课 x,选课 y WHERE x.课程号='C1' AND x.成绩>y.成绩 AND y.学号='S4' AND y.课程号='C1' ORDER BY x.学号 DESC 第二种: USE 学生课程 SELECT 学号,成绩 FROM 选课 WHERE 课程号='C1' AND 成绩>(SELECT 成绩 FROM 选课,学生 WHERE 课程号='C1' AND 姓名='张三'AND 选课.学号=学生.学号) 3. 求其他系中比自动化学院某一学生年龄小的学生。 USE 学生课程 SELECT 学号,姓名,年龄,单位 FROM 学生 WHERE 年龄<(SELECT MAX(年龄) FROM 学生 WHERE 单位='自动化学院') AND 单位!='自动化学院' ORDER BY 学号 DESC 4. 求其他系中比自动化学院学生年龄都小的学生。 USE 学生课程 SELECT 学号,姓名,年龄,单位 FROM 学生 WHERE 年龄<(SELECT MIN(年龄) FROM 学生 WHERE 单位='自动化学院') AND 单位!='自动化学院' ORDER BY 学号 DESC 5. 求选修了C2课程的学生的姓名。 USE 学生课程 SELECT 姓名 FROM 学生,选课 ----完整版学习资料分享---- =====WORD完整版----可编辑----专业资料分享===== WHERE 学生.学号=选课.学号 AND 课程号='C2' 6. 求没有选修C2课程的学生的姓名。 USE 学生课程 SELECT DISTINCT 姓名 FROM 学生,选课 WHERE 学生.学号=选课.学号 AND 姓名 not in (SELECT 姓名 FROM 学生,选课 WHERE 学生.学号=选课.学号 AND 选课.课程号='C2') 7. 查询选修了C1、C2、C3、C7全部四门课程的学生的姓名。 USE 学生课程 SELECT 姓名 FROM 学生 WHERE 学号 in(SELECT 学号 FROM 选课 WHERE 课程号='C1') AND 学号 in(SELECT 学号 FROM 选课 WHERE 课程号='C2') AND 学号 in(SELECT 学号 FROM 选课 WHERE 课程号='C3') AND 学号 in(SELECT 学号 FROM 选课 WHERE 课程号='C7') 第二种: USE 学生课程 SELECT 姓名 FROM 学生,选课 WHERE 学生.学号=选课.学号 AND 课程号 in('C1','C2','C3','C7') GROUP BY 姓名 HAVING COUNT(*)=4 8. 求至少选修了学号为S2的学生所选修的全部课程的学生的学号和姓名。 USE 学生课程 SELECT 学生.学号,姓名 FROM 学生,选课 WHERE 学生.学号=选课.学号 AND 选课.课程号 in(SELECT 课程号 FROM 选课 WHERE 学号='S2') AND 选课.学号!='S2' GROUP BY 学生.学号,姓名 HAVING COUNT(选课.学号) >=(SELECT COUNT(*)FROM 选课 WHERE 学号='S2') 9. 选修了C1课程,同时也选修C2课程的学生学号。 USE 学生课程 SELECT 学号 FROM 选课 WHERE 课程号='C1' AND 学号 in(SELECT 学号 FROM 选课 WHERE 课程号='C2') 10. 求学生总人数。 USE 学生课程 SELECT COUNT(学号)AS 总人数 FROM 学生 11. 求课程和选修该课程的人数。 USE 学生课程 ----完整版学习资料分享---- 本文来源:https://www.wddqw.com/doc/d26a3e7186868762caaedd3383c4bb4cf6ecb75c.html