学号 实验地点 姓名 指导教师 专业、班级 时间 一、实验目的及要求 1. 掌握索引和视图的基本概念和功能。 2. 掌握利用SQL Server ManagementStudio和Transact-SQL语句创建、维护索引的方法。3.掌握SQL Server Management Studio和Transact-SQL语句创建、修改视图的方法。 4. 掌握通过视图查看和修改基本表中的数据。 二、实验设备(环境)及要求 1、环境要求:硬件:个人电脑一台;软件:sql server 2008 三、实验内容及过程 条警告信息“已忽略重复的键”。有 avg.查询每门课程的课程号、课程名及选(5)利用SQL Server ManagementStudio,在teching数据库中创建视图v_ course_降序排序。 修该课程的学生的期末成绩平均分.并且按平均分①启动SQL Server Management sStudio,在“对象资源管理器”窗口中展开“数据库”子目录。 ②选中并展开数据库teaching, 右击“视图”项,,从弹出的快捷菜单中选择“新建视图”命令。 ③在弹出的“添加表”对话框中使用Crl键或Shift 键同时选择course和score两个表,单击“添加”按钮,即可将其添加到视图的查询中。 ④ 单击对话框中的“关闭”按钮,返回到SQL Server Management Studio 的视图设计界面。 ⑤为视图选择包含的数据列。在关系图窗格中选中course数据表的courseno和cname复选框,即可将这两个数据列添加到查询结果集内。 ⑥指定查询条件。在网格窗格中的“表”组合框和“列”组合框中分别选择score. score.final。由于所选数据列只作为搜索子句,而不需在结果集内显示,因此取消对“输出”复选框的勾选。在“筛选器”中输人查询条件ISNOTNULL。 ⑦指定分组依据。打开“查询设计器”菜单,选择“添加分组依据”命令,默认情况下,在查询结果集内出现的列course. courseno和course. cname将成为GROUP BY子句的一部分。对于score.final,除了作为查询条件外,还需与聚合函数生成计算列作为查询结果集中的组成部分,因此需将其再次添加到网格窗格中.并选中“输出”复选框,指定计算列别名为average. ⑧设置排序。在网格窗格中将score. final数据列的排序类型设置为“降序”,排序顺序设置为1。 ⑨设置完成后,单击“保存”按钮。在弹出的对话框中输人视图的名称V course. avg,单击“确定\按钮,即完成了创建视图的操作。 (6)利用Transact SQL语句在teaching数据库中创建视图V age,查询年龄在18周岁及以上的学生的学号、姓名、性别、出生日期和班级编号。若该视图已存在,则删除后重建。 在查询编辑器中输人如下程序代码并执行: JSE teachingGO IP XSTSLECT * FROM sysobjects WERE nane= 'V age AD type=\ ) DROP VIEWv_ ageGC CREATE VIEWV age AS SELECT studentno,sname, sex, birthday, classnoFROM student WHERE year(getdate()- year(birthday)>=18GC SEIBCT * FRON_age (7)利用Transact SQL语句在teaching数据库中创建视图V teacher course,包含教师编号、教师姓名、职称、课程号、课程名和任课班级。 在查询编辑器中输人如下程序代码并执行: USE teaching”GO CREATE VIEN V teacher. course AS SELECT x. teacherno, tname, prof, cname,classnoFROM teacher x, course y, teach class z WHER x. teacherno =z. teacherno and y. courseno = z. courseno SELECT美FROM V_ teacher. course (8)利用Transact-SQL语句修改v. age 的视图定义,添加WITH CHECK OPTION选项。 ①在查询编辑器中输人如下插人语句并执行 USE teachingGO INSERT INTO V age VALUES('16138211038', '李静’,'女’,'1998-6-3','160802*)s0 SELECT * FROMv_ ageSELECT * FROM student 由于新添加记录数据并不符合视图定义的查询条件,因此查看视图v_age会发现新插人的记录并不在结果集中,但通过视图向基本表中插人数据的操作成功,在student中可以查看到新插人的记录。 ②修改视图定义的代码如下: ALTER VIEW V age AS SELECT studentno, sname, sex, birthday, classnoFROM student WHERE year(getdate()) year(birthday)>= 18WITH CHECK OPTION ③在添加了WITH CHECK OPTION选项的视图中执行如下插人语句: INSERT INTOV age VALUES('16138211039,'李琳琳’,女’,'1998-6-3', '160802')GC SELECT * FROM v ageSELECT¥FROM student 由于该视图创建了WITH CHECK OPTION条件约束,当插人记录时所有“年龄”“不符合条件的记录无法插人和修改,并显示错误提示信息: 消息50级别16,状态1,第1行标 ,WITH CHRCR试图进行的插人或更新已失败,原因是目标视图或者目标视图所跨越的某一 视图指定了OPTION,而该操作的一 个或多个结果行又不符合CHECK OPTION约束。 四、实验结果与数据处理 1.利用SQL Server ManagementStudio为student表的classno字段创建非聚集、非唯- - 索引UC_ .classno。 2.利用Transact-SQL语句在teaching数据库中teacher表的tname列.上创建非聚集唯一索引Q. _tname。 3.利用SQL Server ManagementStudio查看索引被查询优化器使用的情况。 4.利用TransactSQL语句修改UQ_ tname的索引属性,当执行多行插入操作时出现重复键值,则忽略该记录,且设置填充因子为80%。 5.利用SQL Server ManagementStudio在teaching数据库中创建视图V_course_avg,查询没门课程的课程号、课程名及选修该课程的学生的期末平均成绩平均分,并且按平均分降序排列。 6.利用Transact-SQL语句,在teaching数据库中创建视图v__age,查询年龄在18岁及以,上的学生的学号、姓名、性别、出生日期和班级编号。若该视图已存在,则删除后重建。 7.利用Transact-SQL语句,在teaching数据库中创建视图v_ teacher course,包含教师编号、教师姓名、职称、课程号、课程名和任课班级。 8.利用Transact-SQL语句修改v. age的视图定义,添加WITH CHECKOPTION选项。 9.通过视图v_teacher..course将教师编号为’t05017’ 的教师的职称更改为副教授’, 10.利用Transact-SQL语句删除创建的索引和视图。 五、分析与讨论 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。 1、视图是已经编译好的sql语句。而表不是 2、视图没有实际的物理记录。而表有。 3、表是内容,视图是窗口 4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改 5、表是内模式,视图是外模式 6、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。 7、表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。 8、视图的建立和删除只影响视图本身,不影响对应的基本表。 (1)使用INSERT语句向数据表中插入数据时,用户必须有插入数据的权利。 (2)由于视图只引用表中的部分字段,所以通过视图插入数据时只能明确指定视图中引用的字段的取值。而那些表中并未引用的字段,必 须知道在没有指定取值的情况下如何填充数据,