资源描述:
《数据库系统原理与设计(万常选)设计实验参考》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验D02:单表查询实验七、设计性实验1.实验要求(1)查询计算机系学生的学号和姓名。Selectsno,snamefromswheredept=’计算机系’(2)查询选修了课程的学生学号。Selectdistinctsnofromsc(3)查询选修C01课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列。]selectsno,gradefromscwherecno=’C01’orderbygradedesc,sno(4)查询每门课程的平均分。Selectcno,avg(grade)fromscgroupbycno(5)查询学校开设的课程总数。
2、Selectcount(distinctcno)fromsc(6)查询选修两门及两门以上课程的学生学号。SelectsnofromscgroupbysnoHavingcount(cno)>=2(7)查询年龄在20-22之间的男生的学号、姓名、系部。Selectsno,sname,deptfromswheresex=’男’andagebetween20and22(8)查询选修‘C01’课程的学生人数。Selectcount(sno)fromscwherecno=’C01’3.思考题(1)使用ORDERBY子句后SELECT后的数据列有什么限制吗?使用GROUPBY呢?答:使用ORD
3、ERBY子句后SELECT后的数据列没有限制,而使用GROUPBY字句后SELECT后的数据列只能是groupby后跟的数据列和聚集函数。(2)执行selectmax(grade)fromsc,写出执行结果;执行selectsno,max(grade)fromscgroupbysno,写出执行结构。思考:使用GROUPBY<分组条件>子句后,语句中的统计函数的运行结果有什么不同?执行selectmax(grade)fromsc只有一个结果,整个选课表的平均成绩,而selectsno,max(grade)fromscgroupbysno显示的是每个学生的选课平均成绩,使用group
4、by字句后,根据其后的字段对数据表进行分组,再对每一个组进行分组统计。实验D03:多表查询实验七、设计性实验1.实验要求(1)查询“计算机系“学生所选课程的成绩表。Selectsno,sname,cno,cname,gradefroms,sc,cwheres.sno=sc.snoandsc.cno=c.cnoanddept=’计算机系’(2)查询成绩比该课程平均成绩低的同学的成绩表。Selectsno,cno,gradefromscsc1wheregrade<(selectavg(grade)fromscsc2wheresc1.cno=sc2.cno)(3)查询选修C01课程的学
5、生学号、课程名、成绩,并要求对查询结果按学号的降序排列,如果学号相同则按成绩的升序排列。Selectsno,cname,gradefromsc,cwheresc.cno=c.cnoandcno=’C01’Orderbygradedesc,sno(4)查询选修两门及两门以上课程的学生学号及姓名。Selectsno,snamefroms,scwheres.sno=sc.cnoGroupbysno,snameHavingcount(cno)>=2(5)查询年龄在20-22之间的男生的选修的课程号。Selectcnofromscwheresnoin(selectsnofromswhere
6、sex=’男’andagebetween20and22)(6)查询选修‘数据结构’课程的学生人数。Selectcount(sno)fromscwherecnoin(selectcnofromcwherecname=’数据结构’)(7)查询每门选课成绩在80分以上的学生学号、姓名。Selectsno,snamefromswheresnoin(selectsnofromscgroupbysnohavingmin(grade)>=80)2.思考题(1)多表的连接查询是否都可以转换成嵌套查询?什么情况下连接查询不能用嵌套查询表示?答:当查询结果涉及多张表中的字段时,多表连接查询不能转换成
7、嵌套查询;当涉及左外连接或者右外连接时多表连接查询也不能转换成嵌套查询。(2)多表连接查询和IN嵌套子查询从查询效率上来说,哪种查询的效果更好?为什么?答:若嵌套子查询为无关嵌套查询时,IN嵌套子查询的查询效率比多表连接查询查询要高。因为无关嵌套查询只对子查询涉及的表扫描1次,而多表连接要做笛卡儿乘积运算,子表要查询多次。若嵌套子查询为相关嵌套查询时,则和多表连接查询的查询效率差不多。实验D04参考答案七、设计性实验1.实验要求(1)在S表中添加完整性约束:SNO设置为主键,SE