数据库原理-实验2解答

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

(1)查询性别为“男”的所有学生的名称并按学号升序排列。SELECTSnameFROMStudentsWHERESsex='男'ORDERBYSno(2)查询学生的选课成绩合格的课程成绩,并把成绩换算为积分。积分的计算公式为:[1+(考试成绩-60)*0.1]*Ccredit。考试成绩=60否则=0SELECTSno,Tno,Reports.Cno,Score,'PointofScore',CONVERT(FLOAT(1),(Score-60)*0.1*Ccredit+Ccredit)FROMCourses,ReportsWHEREScore=60ANDReports.Cno=Courses.CnoUNIONSELECTSno,Tno,Reports.Cno,Score,'PointofScore',0FROMCourses,ReportsWHEREReports.Cno=Courses.CnoAND(Score60ORScoreISNULL)(3)查询学分是3或4的课程的名称。SELECTCnameFROMCoursesWHERECcreditIN('3','4')(4)查询所有课程名称中含有“算法”的课程编号。SELECTCnameFROMCoursesWHERECnameLIKE'%算法%'/*查询得到算法分析与设计、数据结构与算法分析*/(5)查询所有选课记录的课程号(不重复显示)。SELECTDISTINCTCnoFROMReports(6)统计所有老师的平均工资。SELECTAVG(Tsalary)FROMTeachers(7)查询所有教师的编号及选修其课程的学生的平均成绩,按平均成绩降序排列。SELECTTno,AVG(Score)FROMReportsGROUPBYTnoORDERBYAVG(Score)DESC(8)统计各个课程的选课人数和平均成绩。SELECTCno,COUNT(Sno),AVG(Score)FROMReportsGROUPBYCno(9)查询至少选修了三门课程的学生编号和姓名。SELECTSno,SnameFROMStudentsWHERESnoIN(SELECTSnoFROMReportsGROUPBYSnoHAVINGCOUNT(*)=3)(10)查询编号S26的学生所选的全部课程的课程名和成绩。SELECTCourses.Cname,Reports.ScoreFROMCourses,ReportsWHEREReports.Sno='S26'ANDCourses.Cno=Reports.Cno(11)查询所有选了“数据库原理及其应用”课程的学生编号和姓名。SELECTSno,SnameFROMStudentsWHERESnoIN(SELECTReports.SnoFROMReports,CoursesWHEREReports.Cno=Courses.CnoANDCourses.Cname='数据库原理及其应用')(12)求出至少被两名学生选修的课程编号。SELECTDISTINCTX.CnoFROMReportsX,ReportsYWHEREX.Cno=Y.CnoANDX.SnoY.Sno(13)查询选修了编号S26的学生所选的某个课程的学生编号。SELECTY.SnoFROMReportsX,ReportsYWHEREX.Cno=Y.CnoANDX.Sno='S26'/*注:在本题中,如果要求是“查询选修了编号S26的学生所选的某个课程的其他学生编号”时,也就是不包含编号S26学生自身的情况时,在查询条件WHERE中,还需要加上条件X.SnoY.Sno*/(14)查询学生的基本信息及选修课程编号和成绩。SELECTStudents.Sno,Students.Sname,Students.Semail,Students.Scredit,Students.Ssex,Reports.Cno,Reports.ScoreFROMStudentsJOINReportsONStudents.Sno=Reports.Sno(15)查询学号S52的学生的姓名和选修的课程名称及成绩。SELECTStudents.Sname,Courses.Cname,Reports.ScoreFROMStudents,Courses,ReportsWHEREStudents.Sno=Reports.SnoANDCourses.Cno=Reports.CnoANDStudents.Sno='S52'(16)查询和学号S52的学生同性别的所有学生资料。SELECT*FROMStudentsWHERESsex=(SELECTSsexFROMStudentsWHERESno='S52')(17)查询所有选课的学生的详细信息。SELECT*FROMStudentsWHERESnoIN(SELECTSnoFROMReports)(18)查询没有学生选的课程的编号和名称。SELECTCno,CnameFROMCoursesWHERECnoNOTIN(SELECTCnoFROMReports)(19)查询选修了课程名为C++的学生学号和姓名。SELECTSno,SnameFROMStudentsWHERESnoIN(SELECTSnoFROMReportsWHERECnoIN(SELECTCnoFROMCoursesWHERECname='C++'))(20)找出选修课程UML或者课程C++的学生学号和姓名。SELECTSno,SnameFROMStudentsWHERESnoIN(SELECTSnoFROMReportsWHERECnoIN(SELECTCnoFROMCoursesWHERECname='C++'ORCname='UML'))(21)找出和课程UML或课程C++的学分一样课程名称。SELECTCnameFROMCoursesWHERECcredit=SOME(SELECTCcreditFROMCoursesWHERECname='UML'ORCname='C++')/*注:在本题中,将=SOME换成=ANY或IN都可行。*/(22)查询所有选修编号C01的课程的学生的姓名。SELECTSnameFROMStudentsWHEREEXISTS(SELECT*FROMReportsWHEREReports.Cno='C01'ANDReports.Sno=Students.Sno)(23)查询选修了所有课程的学生姓名。SELECTSnameFROMStudentsWHERENOTEXISTS(SELECT*FROMReportsXWHERENOTEXISTS(SELECT*FROMReportsYWHEREY.Sno=Students.SnoANDY.Cno=X.Cno))(24)利用集合查询方式,查询选修课程C++或选择课程JAVA的学生的编号、姓名和积分。SELECTSno,Sname,ScreditFROMStudentsWHERESnoIN(SELECTSnoFROMReportsWHEREReports.Cno=(SELECTCourses.CnoFROMCoursesWHERECourses.Cname='C++'))UNIONSELECTSno,Sname,ScreditFROMStudentsWHERESnoIN(SELECTSnoFROMReportsWHEREReports.Cno=(SELECTCourses.CnoFROMCoursesWHERECourses.Cname='JAVA'))(25)实现集合交运算,查询既选修课程C++又选修课程JAVA的学生的编号、姓名和积分。SELECTSno,Sname,ScreditFROMStudentsWHERESnoIN(SELECTX.SnoFROMReportsX,ReportsYWHERE(X.Cno=(SELECTCnoFROMCoursesWHERECname='C++')ANDY.Cno=(SELECTCnoFROMCoursesWHERECname='JAVA'))ANDX.Sno=Y.Sno)(26)实现集合减运算,查询选修课程C++而没有选修课程JAVA的学生的编号。基本的语句模式如下:SELECTSnoFROMReportsWHERECno='C01'ANDSnoNOTIN(SELECTSnoFROMReportsWHERECno='C03')本题具体的SQL语句SELECT*FROMStudentsWHERESnoIN(SELECTSnoFROMReportsWHERECno=(SELECTCnoFROMCoursesWHERECname='C++')ANDSnoNOTIN(SELECTSnoFROMReportsWHERECno=(SELECTCnoFROMCoursesWHERECname='JAVA')))(28)求平均成绩在75分以上的课程名selectCourses.cname,avg(Score)aspjcjfromCOURSE,ReportswhereCOURSEs.cnom=Reports.cnogroupbyCOURSEs.cnohavingavg(Score)75(29)检索“张三”同学不学的课程的课程号SELECTdistinctcnofromCourseswherecnonotin(selectReports.cnofromStudents,ReportswhereStudents.sno=Reports.snoandStudents.sname='张三')

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功