您好,欢迎访问三七文档
第5章索引和视图1.索引的作用是什么?答:索引可以加快数据的查询效率。2.索引分为哪几种类型?分别是什么?它们的主要区别是什么答:分为聚集索引和非聚集索引两种。聚集索引会对数据进行物理排序,非聚集索引不对数据进行物理排序。3.在一个表上可以创建几个聚集索引?可以创建多个非聚集索引吗?答:一个聚集索引。可以。4.聚集索引一定是唯一性索引,对吗?反之呢?答:不对。反之也不对。5.在建立聚集索引时,数据库管理系统是真正将数据按聚集索引列进行物理排序。对吗?答:对。6.在建立非聚集索引时,数据库管理系统并不对数据进行物理排序。对吗?答:对。7.不管对表进行什么类型的操作,在表上建立的索引越多越能提高操作效率。对吗?答:不对。9.使用第4章建立的Student、Course和SC表,写出实现下列操作的SQL语句。(1)在Student表上为Sname列建立一个聚集索引,索引名为:SnoIdx。CreateclusteredindexSnoIdxonstudent(sname)(2)在Course表上为Cname列建立一个唯一的非聚集索引,索引名为:CNIdxCreateindexCNIdxoncourse(cname)(3)在SC表上为Sno和Cno建立一个组合的聚集索引,索引名为:SnoCnoIdx。CreateclusteredindexSnoCnoIdxonSC(sno,cno)(4)删除Sname列上建立的SnoIdx索引。11.使用视图可以加快数据的查询速度,这句话对吗?为什么?答:不对,因为通过视图查询数据时,比直接针对基本表查询数据多了一个转换过程,即从外模式到模式的转换。12.使用第4章建立的Student、Course和SC表,写出创建满足下述要求的视图的SQL语句。(1)查询学生的学号、姓名、所在系、课程号、课程名、课程学分。Createviewv1AsSelects.sno,sname,sdept,c.cno,cname,creditFromstudentsjoinscons.sno=sc.snoJoincourseconc.cno=sc.cno(2)查询学生的学号、姓名、选修的课程名和考试成绩。Createviewv2AsSelects.sno,sname,cname,gradeFromstudentsjoinscons.sno=sc.snoJoincourseconc.cno=sc.cno(3)统计每个学生的选课门数,要求列出学生学号和选课门数。Createviewv3AsSelectsno,count(*)astotalFromscgroupbysno(4)统计每个学生的修课总学分,要求列出学生学号和总学分(说明:考试成绩大于等于60才可获得此门课程的学分)。Createviewv4AsSelectsno,sum(credit)astotal_creditFromsnojoincourseconc.cno=sc.cnoWheregrade=60Groupbysno13.利用第12题建立的视图,完成如下查询:(1)查询考试成绩大于等于90分的学生的姓名、课程名和成绩。Selectsname,cname,gradeFromv2wheregrade=90(2)查询选课门数超过3门的学生的学号和选课门数。Select*fromv3wheretotal=3(3)查询计算机系选课门数超过3门的学生的姓名和选课门数。Selectsname,totalfromv3joinstudentsons.sno=v3.snoWheresdept=‘计算机系’andtotal=3(4)查询修课总学分超过10分的学生的学号、姓名、所在系和修课总学分。Selectv4.sno,sname,sdept,total_creditFromv4joinstudentsons.sno=v4.snoWheretotal_credit=10(5)查询年龄大于等于20岁的学生中,修课总学分超过10分的学生的姓名、年龄、所在系和修课总学分。Selectsname,sage,sdept,total_creditFromv4joinstudentsons.sno=v4.snoWheresage=20andtotal_credit=1014.修改12题(4)定义的视图,使其查询每个学生的学号、总学分以及总的选课门数。Alterviewv4AsSelectsno,sum(credit)astotal_credit,count(*)astotal_cnoFromscjoincourseconc.cno=sc.cnoGroupbysno
本文标题:第五章课后习题答案
链接地址:https://www.777doc.com/doc-5549700 .html