欢迎来到天天文库
浏览记录
ID:44063288
大小:497.31 KB
页数:15页
时间:2019-10-18
《《数据库习题课》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数据库习题课(第二章and第三章)关系代数与SQL语句例题1设有如图所示的关系S,SC,C,试用关系代数表达式表示下列查询语句:S#SNAMEAGESEX1李强23男2刘丽22女3张友22男C#CNAMETEACHERK1C语言王华K5数据库原理程军K8编译原理程军S#C#GRADE1K1832K1855K1922K5905K5845K880(1)检索“程军”老师所授课程的课程号(C#)和课程名(CNAME)。(2)检索年龄大于21的男学生学号(S#)和姓名(SNAME)。(3)检索至少选修“程军”老师所授全部课程的学生姓名。(4)检索“李强”同学不学课程的课程号。(5)检索至少选修两门
2、课程的学生学号(S#)。(6)检索全部学生都选修的课程的课程号(C#)和课程名(CNAME)。(7)检索选修课程包含“程军”老师所授课程之一的学生学号(S#)。(8)检索选修课程号为K1和K5的学生学号(S#)。(9)检索选修全部课程的学生姓名(SNAME)。(10)检索选修课程包含学号为2的学生所修课程的学生学号(S#)。(11)检索选修课程名为“C语言”的学生学号(S#)和姓名(SNAME)。(2)(1)(3)(4)(5)(6)(7)(8)(9)(10)(11)(1)检索“程军”老师所授课程的课程号CNO和课程名CNAME。SELECTCNO,CNAMEFROMCWHERETEACH
3、ER=’程军’;(2)检索年龄大于21的男学生学号SNO和姓名SNAME。SELECTSNO,SNAMEFROMSWHEREAGE>21ANDSEX=’男’;(3)检索至少选修“程军”老师所授全部课程的学生姓名SNAME。SELECTSNAMEFROMSWHERENOTEXISTS(SELECT*FROMCWHERETEACHER=’程军’ANDNOTEXISTS(SELECT*FROMSCWHERESC.SNO=S.SNOANDSC.CNO=C.CNO));(4)检索“李强”同学不学课程的课程号。SELECTCNOFROMCWHERECNONOTIN(SELECTCNOFROMSC,S
4、WHERESC.SNO=S.SNOANDS.SNAME=’李强’);SELECTCNOFROMCEXCEPTSELECTCNOFROMSC,SWHERESC.SNO=S.SNOANDS.SNAME=’李强’;或(5)检索至少选修两门课程的学生学号。SELECTSNOFROMSCA,SCBWHEREA.SNO=B.SNOANDA.CNO<>B.CNO;(6)检索全部学生都选修的课程的课程号和课程名。SELECTCNO,CNAMEFROMCWHERENOTEXISTS(SELECT*FROMSWHERENOTEXISTS(SELECT*FROMSCWHERESC.CNO=C.CNOANDSC
5、.SNO=S.SNO));(7)检索选修课程包含“程军”老师所授课程之一的学生学号。SELECTSNOFROMC,SCWHEREC.CNO=SC.CNOANDC.TEACHER=’程军’;(8)检索选修课程号为k1和k5的学生学号。SELECTSNOFROMSCWHERESC.CNO=’k1’INTERSECTSELECTSNOFROMSCWHERESC.CNO=’k5’;或:SELECTSNOFROMSCA,SCBWHEREA.SNO=B.SNOANDA.CNO=’k1’ANDB.CNO=’k5’;(9)检索选修全部课程的学生姓名;SELECTSNAMEFROMSWHERENOTEXI
6、STS(SELECT*FROMCWHERENOTEXISTS(SELECT*FROMSCWHERESC.SNO=S.SNOANDSC.CNO=C.CNO));1.所有未选过的课程的数据集:select*from课程wherenotexists(select*from选读where课程号=课程.课程号)2.所有没被某位学号为@学号的学生选过的课程的记录集(@学号学生的未选课程):select*from课程wherenotexists(select*from选读where学号=@学号and课程号=课程.课程号)请注意,多出了学号的筛选即,学号=@学号。3.遍历每一个主查询的学号,每一个学号都
7、按第二筛选方法筛选出:没有未选课程的学生的学号。(不包括在第查询方法查询出的“有未学课程的学号的记录集”中的记录。)请注意:用主查询中的学生.学号代替了@学号。select学生.姓名from学生wherenotexists(select*from课程wherenotexists(select*from选读where学号=学生.学号and课程号=课程.课程号))这已经是整个查询语句,可以看出子查询中用学生.学号替换了第2步中的@学号S
此文档下载收益归作者所有