资源描述
西北师范大学计算机科学与工程学院学生实验报告学 号专业计算机科学与技术姓名课程名称数据库应用与开发班级实验名称索引和视图课程类型专业限选课实验目的:在SQL SEVER 2005中,影响其数据库性的因素有很多,其中最重要的一项就是设计了有效的索引。而视图是从一个或几个基表(或视图)导出的表,与基表不同的是,视图是一个虚拟表,视图包含一系列带有名称的列和行数据。本次实验主要练习它们的创建和使用。实验内容:1、在course表的cname列上创建非聚集索引IDX-cnameSQL代码:create nonclustered INDEX IDX_cname ON course(cname)实验结果:2、在student表的studentno和classno列上创建唯一索引UQ-stu,若该索引已存在,则删除后重建。然后输出student表中的记录,查看输出结果的顺序。SQL代码:USE teachingGOIF EXISTS(SELECT name FROM sysindexes WHERE name=UQ_stu) DROP INDEX student.UQ_stuGOCREATE NONCLUSTERED INDEX UQ_stu ON student(studentno,classno)GOSELECT *FROM student实验结果:3、修改UQ-stu的索引属性,当执行多行插入操作时出现重复键值,则忽略该记录,且设置填充因子为80%SQL代码:USE teachingGOALTER INDEX UQ_stu ON student REBUILD WITH (PAD_INDEX=ON,FILEFACTOR=80,IGNORE-DUP_KEY=ON)GO 实验结果:4、创建一个视图v-teacher,查询“计算机学院”所有教师的信息SQL代码:USE teachingGOCREATE VIEW v_teacherASSELECT *FROM teacherWHERE department=计算机学院GOSELECT *FROM v_teacher实验结果:5、创建一个视图v-avgstu,查询每个学生的学号、姓名及平均分,并且按照平均分降序排序SQL代码:USE teachingGOCREATE VIEW v_avgstuAS SELECT TOP(100) PERCENT student.studentno,studnt.sname,AVG(score.final) AS averageFROM student,scoreWHERE student.studentno=score.studentno AND score.final IS NOT NULLGROUP BY student.studentno,student.snameORDER BY AVG(score.final) DESCGOSELECT *FROM v_avgstu实验结果:6、修改v-avgstu的视图定义,添加WITH CHECK OPTION选项SQL代码:USE teachingGOALTER VIEW v_avgstuASSELECT *FROM teacherWHERE department=计算机学院WITH CHECK OPTIONGO实验结果:7、通过视图v-avgstu向基表teacher中分别插入数据(05039,张馨月,计算机应用,讲师,计算机学院)和(06018,李诚,机械制造,副教授,机械学院),并查看插入数据的情况SQL代码:USE teachingGOINSERT INTO v_teacherVALUES(05039,张馨月,计算机应用,讲师,计算机学院)INSERT INTO v_teacherVALUES(06018,李诚,机械制造,副教授,机械学院)SELECT *FROM v_teacherSELECT *FROM teacher 实验结果:8、通过视图v-teacher将基表teacher中教师编号为05039的教师职称修改为“副教授”SQL代码:USE teachingGOUPDATE v_teacherSET prof=副教授WHERE teacherno=05039GOSELECT *FROM teacher实验结果:实验总结:通过本次实验掌握了索引、统计信息和视图等数据库对象的基本概念和基本操作。实验评语:实验成绩教师签字9
展开阅读全文