资源描述:
《数据库语言SQL作业解答》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、SQL语言习题1.关系数据模型如下:学生S(SNO,SN,SEX,AGE)课程C(CNO,CN,PCNO)PCNO为直接先行课号选课SC(SNO,CNO,GR)GR为课程考试成绩用SQL写出查询程序:选修课程“DB”的学生姓名SN。方法1.SELECTSNFROMSWHERESNOIN(SELECTSNOFROMSCWHERECNOIN(SELECTCNO/*=*/FROMCWHERECN=‘DB’));方法2.SELECTSNFROMS,SC,CWHERES.SNO=SC.SNOANDSC.CNO=C.CNOA
2、NDCN=“DB”;2.关系数据模型如下:学生S(SNO,SN,SEX,AGE)课程C(CNO,CN,PCNO)PCNO为直接先行课号选课SC(SNO,CNO,GR)GR为课程考试成绩用SQL写出查询程序:查询课程名和它的直接先行课的课程名以及它的间接先行课的课程名。SELECTCN,CX.CN,CY.CNFROMC,CCX,CCYWHEREC.PCNO=CX.CNOANDCX.PCNO=CY.CNO[例41]找出每个学生超过他选修课程平均成绩的课程号。SELECTSno,CnoFROMSCxWHEREGrade
3、>=(SELECTAVG(Grade)FROMSCyWHEREy.Sno=x.Sno);3.关系数据模型如下P84例4.26学生S(SNO,SN,SEX,AGE)课程C(CNO,CN,PCNO)PCNO为直接先行课号选课SC(SNO,CNO,GR)GR为课程考试成绩用SQL写出查询程序:所有学生都选修的课程名CN。方法1.SELECTCNFROMCWHERENOTEXISTS(SELECT*FROMSWHERENOTEXISTS(SELECT*FROMSCWHERESNO=S.SNOANDCNO=C.CNO);(
4、"x)P≡Ø($x(ØP))变换后语义:不存在这样的学生x,该学生没有选修P。方法2.SELECTCNFROMCWHERECNOIN(SELECTCNOFROMSCGROUPBYCNOHAVINGCOUNT(*)=(SELECTCOUNT(*)FROMS));[例46]查询选修了全部课程的学生姓名。SELECTSnameFROMStudentWHERENOTEXISTS(SELECT*FROMCourseWHERENOTEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno=
5、Course.Cno));变换后语义:不存在这样的课程x,该学生没有选修P。4.假设学生一课程数据库关系模式如下:Student(Sno,Sname,Sage,Ssex);Course(Cno,Cname,Teacher);SC(Sno,Cno,Grade)。用SQL语句表达下列查询:(1)找出刘老师所授课程的课程号和课程名;(2)找出年龄小于22岁的女学生的学号和姓名。1.SELECTCno,CnameFROMCourseWHERETeacherLIKE“刘%”/*%_*/2.SELECTSNO,SNAMEFR
6、OMStudentWHERESAGE<22ANDSSEX=’女’5.假设学生一课程数据库关系模式如下:Student(Sno,Sname,Sage,Ssex);Course(Cno,Cname,Teacher);SC(Sno,Cno,Grade)。用SQL语句表达下列查询:(1)找出至少选修刘老师讲的一门课的学生姓名;(2)找出“程序设计”课成绩在90分以上的学生的姓名;(3)检索至少选修了课程号为‘C1和‘C3’的学生号。答案1.SELECTSNAMEFROMSTUDENT,SC,COURSEWHERESTUD
7、ENT.SNO=SC.CNOANDSC.CNO=COURSE.CNOANDTEACHERLIKE“刘%”2.SELECTSNAMEFROMSTUDENT,SC,COURSEWHERESTUDENT.SNO=SC.SNOANDSC.CNO=COURSE.CNOANDCNAME=”程序设计”ANDGRADE>903.SELECTSno教科书:P80***例4.18FROMSCSC1,SCSC2WHERESC1.Sno=SC2.SnoANDSC1.Cno=’C1’ANDSC2.Cno=’C3’[例51]查询既选修了课程
8、1又选修了课程2的学生SELECTSnoFROMSCWHERECno='1'ANDSnoIN(SELECTSnoFROMSCWHERECno='2');SELECTSnoFROMSCWHERECno=’C1’ORCno=’C3’/*AND*/6.假设学生一课程数据库关系模式如下:Student(Sno,Sname,Sage,Ssex);Course(Cno,Cname,T