视图和索引的创建和使用实验报告

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

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

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

资源描述

信息工程学院实验报告课程名称:《数据库原理》实验项目名称:视图和索引的创建和使用一、实验目的:(1)掌握创建视图的SQL语句的用法。(2)掌握修改视图的方法。(3)熟悉视图更新与基本表更新的区别与联系;认识视图的作用。(4)熟悉索引的作用,以及不同类型索引的区别。(5)学会用T-SQL语句对表创建和删除索引二、实验设备与器件Win7+Sqlserver2008三、实验内容与步骤利用备份文件school,还原数据库,然后完成以下实验内容:(1)用T-SQL语句,定义信息系学生基本情况视图V_IS。(2)用T-SQL语句,将Student,Course和SC表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G。(3)用T-SQL语句,将各系学生人数,平均年龄定义为视图V_NUM_AVG。(4)用T-SQL语句,定义一个反映学生出生年份的视图V_YEAR。(5)用T-SQL语句,将各位学生学号、选修课程的门数及平均成绩定义为视图V_AVG_S_G。(6)用T-SQL语句,将各门课程的课程号、选修人数及平均成绩定义为视图V_AVG_C_G。(7)用T-SQL语句完成以下视图操作,查看结果,并分析原因。①通过视图V_IS,将学号为“200215125”的学生姓名更改为“张小立”,并查看结果;②通过视图V_IS,新增加一个学生记录('200215126','黄笑',19,'男','IS'),并查看结果。③通过视图V_IS,新增加一个学生记录('200215127','李霞',19,'女','MA'),并查看结果。④通过视图V_IS,删除学号为“200215126”的学生信息,并查看结果。⑤通过视图V_S_C_G,将学号“200215122”的姓名改为“刘晓晨”,能否实现?若无法实现说明原因。⑥通过视图V_AVG_S_G,将学号“200215121”的平均成绩改为90,能否实现?若无法实现说明原因。⑦修改视图V_IS定义,添加WITHCHECKOPTION语句,然后用update语句修改“200215125”的学生所在系,改为’MA’,能否实现?若无法实现说明原因。⑧修改视图V_YEAR,对其进行加密处理,并查看结果。(8)写出T-SQL语句:利用表和前面所建视图,查询平均成绩为90分以上的学生学号、姓名和成绩;(9)写出T-SQL语句:利用表和前面所建视图,查询成绩大于课程平均成绩的学生学号、课程号和成绩;(10)写出T-SQL语句:利用表和前面所建视图,按系分组统计平均成绩80分以上的人数,按降序排列。(11)为student表创建一个复合索引i_sdept_sno,以院系升序、学号降序。(12)在student表的sname列上建立普通降序索引。(13)在course表的cname列上建立唯一索引。(14)将sc表的原先在sno,cno列上的聚集索引,改为在sno列上建立。(15)用系统过程sp_helpindex查看表student中的索引信息。(16)用系统过程sp_rename,将索引i_sdept_sno的名称改为i_s。成绩:指导老师(签名):(17)删除索引i_s。四、实验总结:(1)用T-SQL语句,定义信息系学生基本情况视图V_IS。CREATEVIEWV_ISASSELECT*FROMstudentWHEREsdept='IS'(2)用T-SQL语句,将Student,Course和SC表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G。CREATEVIEWV_S_C_GASSELECTSTUDENT.SNO,SNAME,COURSE.CNO,CNAME,SC.GRADEFROMStudent,Course,SCWHEREstudent.SNO=SC.snoANDSC.CNO=COURSE.CNO(3)用T-SQL语句,将各系学生人数,平均年龄定义为视图V_NUM_AVG。CREATEVIEWV_NUM_AVGASSELECTCOUNT(SNO)DEPTNUM,AVG(SAGE)AGE,SDEPTFROMStudentGROUPBYSDEPT(4)用T-SQL语句,定义一个反映学生出生年份的视图V_YEAR。CREATEVIEWV_YEARASSELECTSNAME,2014-SAGE‘出生年份’FROMStudent(5)用T-SQL语句,将各位学生学号、选修课程的门数及平均成绩定义为视图V_AVG_S_G。CREATEVIEWV_AVG_S_GASSELECTSTUDENT.SNO'学号',SNAME'姓名',COUNT(*)'选修门数',AVG(GRADE)'平均成绩'FROMstudent,course,SCWHEREStudent.SNO=SC.SNOANDSC.CNO=COURSE.CNOGROUPBYSTUDENT.SNO,SNAME(6)用T-SQL语句,将各门课程的课程号、选修人数及平均成绩定义为视图V_AVG_C_G。CREATEVIEWV_AVG_C_GASSELECTSC.CNO'课程号',AVG(GRADE)'平均成绩',COUNT(CNO)'选修人数'FROMSCGROUPBYCNO(7)用T-SQL语句完成以下视图操作,查看结果,并分析原因。①通过视图V_IS,将学号为“200215125”的学生姓名更改为“张小立”,并查看结果;UPDATEV_ISSETSNAME=’张小立’WHERESNO=200215125视图结果:Student表结果显示在视图操作,会影响到建立视图时用的STUDENT这张表格。②通过视图V_IS,新增加一个学生记录('200215126','黄笑',19,'男','IS'),并查看结果。INSERTINTOV_IS(SNO,SNAME,SSEX,SAGE,SDEPT)VALUES(‘200215126’,’黄笑’,’男’,19,’IS’)SELECT*FROMV_ISWHERESNO=’200215126’③通过视图V_IS,新增加一个学生记录('200215127','李霞',19,'女','MA'),并查看结果。INSERTINTOV_IS(SNO,SNAME,SSEX,SAGE,SDEPT)VALUES(‘200215127’,’李霞’,’女’,19,’MA’)SELECT*FROMV_ISWHERESNO=’200215127’但是视图没有此条数据④通过视图V_IS,删除学号为“200215126”的学生信息,并查看结果。DELETEFROMV_ISWHERESNO=’200215126’⑤通过视图V_S_C_G,将学号“200215122”的姓名改为“刘晓晨”,能否实现?若无法实现说明原因。UPDATEV_S_C_GSETSNAME=’刘晓晨’WHERESNO=’200215122’可实现此次操作⑥通过视图V_AVG_S_G,将学号“200215121”的平均成绩改为90,能否实现?若无法实现说明原因。UPDATEV_AVG_S_GSET[平均成绩]='90'WHERE[学号]='200215121'不能实现,原因是系统无法修改各科成绩,以使平均成绩为90,所以V_AVG_S_G视图时不可更新的。⑦修改视图V_IS定义,添加WITHCHECKOPTION语句,然后用update语句修改“200215125”的学生所在系,改为’MA’,能否实现?若无法实现说明原因。ALTERVIEWV_ISASSELECT*FROMSTUDENTWHERESDEPT=’IS’WITHCHECKOPTIONUPDATEV_ISSETSDEPT=’MA’WHERESNO=’200215125’无法实现此操作,原因是目标视图所跨越的某一视图指定了WITHCHECKOPTION,而该操作的一个或多个结果又不符合WITHCHECKOPTION约束的条件。⑧修改视图V_YEAR,对其进行加密处理,并查看结果。ALTERVIEWV_YEARWITHENCRYPTIONASSELECTSNAME,2014-SAGE‘出生年份’FROMSTUDENT(8)写出T-SQL语句:利用表和前面所建视图,查询平均成绩为90分以上的学生学号、姓名和成绩;SELECTV_AVG_S_G.学号,student.sname,V_AVG_S_G.平均成绩fromstudent,V_AVG_S_Gwherestudent.sno=V_AVG_S_G.学号andV_AVG_S_G.平均成绩90(9)写出T-SQL语句:利用表和前面所建视图,查询成绩大于课程平均成绩的学生学号、课程号和成绩;selectsc.sno学号,sc.cno课程号,sc.grade成绩fromsc,V_AVG_C_Gwheresc.cno=V_AVG_C_G.课程号andsc.gradeV_AVG_C_G.平均成绩心得体会:对语句不熟悉,有的操作花了很多时间,所以之做到这步,争取下次老师布置的实验按时完成。

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

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

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

×
保存成功