《2022年数据库查询宣贯》由会员分享,可在线阅读,更多相关《2022年数据库查询宣贯(4页珍藏版)》请在金锄头文库上搜索。
1、例 32 查询选修了3 门以上课程的学生学号。例 33 查询每个学生及其选修课程的情况例 34 对例 33 用自然连接完成。(结果无重复列 ) 例 35 查询每一门课的间接先修课(即先修课的先修课)例 36 改写 例 33外连接()SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student LEFT JOIN SC ON (Student.Sno=SC.Sno); 例 37 查询选修 2 号课程且成绩在90 分以上的所有学生例 38 查询每个学生的学号、姓名、选修的课程名及成绩例 39 查询与“刘晨”在同一个系学习的学生。此查
2、询要求可以分步来完成定“刘晨”所在系名查找所有在IS 系学习的学生。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 4 页 - - - - - - - - - 将第一步查询嵌入到第二步查询的条件中例 40 查询选修了课程名为“信息系统”的学生学号和姓名提示:首先在 Course 关系中找出“信息系统”的课程号,为3 号然后在 SC 关系中找出选修了3 号课程的学生学号最后在 Student 关系中取出Sno 和 Sname 例 41找出每个学生超过他选修课程平均成绩的课程
3、号。例 42 查询其他系中比计算机科学某一学生年龄小的学生姓名和年龄方法一:用any 方法二:用聚集函数MIN 例 43 查询其他系中比计算机科学系所有学生年龄都小的学生姓名及年龄。方法一:用ALL 谓词名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 4 页 - - - - - - - - - 例 44 查询所有选修了1 号课程的学生姓名。思路分析:本查询涉及Student 和 SC 关系在 Student 中依次取每个元组的Sno 值,用此值去检查 SC 关系若 SC
4、中存在这样的元组,其Sno 值等于此Student.Sno值,并且其Cno= 1,则取此Student.Sname送入结果关系用嵌套查询例 45查询没有选修1 号课程的学生姓名。例 46 查询选修了全部课程的学生姓名。例 47查询至少选修了学生200215122选修的全部课程的学生号码。解题思路:用逻辑蕴函表达:查询学号为x 的学生,对所有的课程y,只要 200215122学生选修了课程y,则 x 也选修了y。形式化表示:用 P 表示谓词“学生 200215122选修了课程y”用 q 表示谓词“学生 x 选修了课程y”则上述查询为: (y) p q 名师资料总结 - - -精品资料欢迎下载 -
5、 - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 4 页 - - - - - - - - - 例 48 查询计算机科学系的学生及年龄不大于19 岁的学生。方法一: UNION UNION :将多个查询结果合并起来时,系统自动去掉重复元组。UNION ALL :将多个查询结果合并起来时,保留重复元组方法二: or 例 49 查询选修了课程1 或者选修了课程2 的学生。例 50 查询计算机科学系的学生与年龄不大于19 岁的学生的交集(INTERSECT )例 51 查询既选修了课程1 又选修了课程2 的学生例 52 查询计算机科学系的学生与年龄不大于19 岁的学生的差集。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 4 页 - - - - - - - - -