实验4:索引和视图

实验四 索引和视图
一、实验学时
2学时
二、实验目的
(1)理解索引的概念与类型。
(2)掌握使用企业管理器创建与维护索引的方法。
(3)掌握T-SQL语句创建与维护索引的方法。
(4)理解视图的概念。
(5)掌握视图创建、更改的方法。
(6)掌握用视图管理数据的方法。
三、实验要求
(1)硬件设备:奔腾II或奔腾II以上计算机,局域网。
(2)软件环境:WINDOWS 9X/NT、WINDOWS SERVER、WINDOWS XP、WINDOWS 7、SQL SERVER 2000/2005/2008中文版企业版或标准版。
(3)实验课前预习,课后及时完成实验内容。
(4)实验过程及记录按题目格式要求填写代码清单。
四、实验内容
(一)索引
索引分为两种:聚簇索引和非聚簇索引。每张表只能有一个聚簇索引。创建索引时的缺省设置是非聚簇索引。
1.使用企业管理器创建、管理索引
(1)创建索引
1)为Student表创建一个以Sno为索引关键字的惟一聚簇索引。(若原已有,请删除,索引名为Sno_index)
(提示:选择表后点击鼠标右键,选“设计”,窗口空白区域点击鼠标右键,选“索引/键”)
基本步骤:

2)为Student表创建以Sname,Sex为索引关键字的非聚簇索引(对Sname以升序来排列,Sex以降序排列,并设置填充因子为70%)。索引名为:SS_index。(提示:填充因子为索引创建时索引里的数据页被填充的数量)
基本步骤:

(2)重命名索引
将索引文件Sno_index重新命名为Sno_index1。
基本步骤:

(3)删除索引
将索引文件Sno_index1删除。
基本步骤:

2.使用T-SQL语句创建、管理索引
(1)创建索引
1)为SC表创建一个非聚集索引Grade_index,索引关键字为Grade,升序,填充因子为80%。(提示:with fillfactor=)
T-SQL语句:
create nonclustered index Grade_index on SC(Grade asc)
with fillfactor=80;
2)为SC表创建一个唯一性聚集索引SC_index,索引关键字为Sno,Cno。
用create index命令创建SC_index索引。
T-SQL语句:
create unique clustered index SC_index on SC(Sno,Cno);
3)为Course表创建一个非聚集索引CC_index,索引关键字为Ccredit、Cname,前者按降序,后者按升序进行索引。
T-SQL语句:
create nonclustered index CC_index on Course(Ccredit desc,Cname asc);

(2)重命名索引
将CC_index索引改名为CC_index1。
提示:使用sp_rename存储过程
T-SQL语句:
exec sp_rename’Course.CC_index’ ,‘CC_index1’;
(3)删除索引
将Grade_index索引删除。
T-SQL语句:
drop index Grade_index on SC

(二)视图
创建视图是数据库应用中的常见需求,可以使用企业管理器创建、管理视图,也可以用T-SQL语言创建、管理视图。
1.用企业管理器创建、管理视图
(1)创建视图
使用企业管理器在表Student上创建一个能查询所在系为“IS”的学生学号、姓名、性别信息的投影视图。
1)依次进入企业管理器、数据库、Stu_Course库、视图,并用鼠标右键单击“视图”。
2)在系统弹出的快捷菜单中单击“新建视图”,出现“新建视图”窗口。
3)最上面的一个窗格用于添加创建视图的基础对象,在其上按鼠标右键,单击快捷菜单中的“添加表”,将表Student添加到此窗格中,上面第二个窗格用于选择进入视图的列,分别选择相应字段:学号、姓名、性别,设定Sdept的筛选条件:=‘IS’。在查询条件窗格中将自动生成查询语句,最后一个窗格为视图结果窗口。
4)单击工具栏,执行按钮“!”,观察执行结果是否正确。若正确,则单击“保存”按钮,输入文件名:stuview1,再单击“确定”按钮,视图创建完成。

(2)修改视图stuview1
将视图stuview1的定义修改为查询所在系为“MA”的学生学号、姓名、性别信息的投影视图。
(提示:在企业管理器中选中视图后->单击右键->设计->进行修改。)
基本操作步骤:

(4)管理视图中的数据
1)查看视图stuview1中的数据。用鼠标右键单击要管理的视图stuview1,单击“编辑”。(试运行即可,不写步骤。)
2)将视图stuview1中学号为“200215125”的学生姓名由“张立”改为“张华”。
(注:须点击按钮“!”进行修改确认。)
基本步骤:

3.用T-SQL语言创建、管理视图
(1)创建视图
1)创建一个名为stuview2的水平视图,从数据库Stu_Course的Student表中查询出性别为“男”的所有学生的资料。并在创建视图时使用with check option。(注:该子句用于强制视图上执行的所有修改语句必须符合由Select语句where中的条件。)
T-SQL语句为:
create view stuview2
as
select *
from Student
where Ssex=‘男’
with check option
2)创建一个名为stuview3的投影视图,从数据库Stu_Course的Course表中查询学分大于3的所有课程的课程号、课程名、学分。并在创建时对该视图加密。(提示:用WITH ENCRYPTION关键子句,加在as与视图名称之间,且sp_helptext无法看到该视图的定义脚本。)
T-SQL语句为:
create view stuview3
with encryption
as
select Cno,Cname,Ccredit
from Course
where Ccredit>3
3)创建一个名为stuview4的视图,能检索出每位选课学生的学号、姓名、课程名、成绩。
T-SQL语句为:
create view stuview4
as
select Student.Sno,Sname,Cname,Grade
from Student,Course,SC
where Student.Sno=SC.Sno and Course.Cno=SC.Cno
(2)查询视图的创建信息及视图中的数据
查看视图stuview2的定义脚本。(提示:sp_helptext)
结果为:
sp_helptext ‘stuview2’

(3)修改视图的定义
修改视图stuview3使其从数据库Stu_Course的Course表中查询学分大于3的所有课程的课程号、课程名、学分。(提示:若视图原具有加密保护,修改视图时若未加WITH ENCRYPTION子句,则修改后的视图不再加密。修改视图请查阅帮助alter view关键字。)
T-SQL语句:

alter view stuview3
as
select Cno,Cname,Ccredit
from Course
where Ccredit>3
(4)视图的更名与删除
1)将视图stuview4更名为stuv4。
方法:(提示:sp_rename)
exec sp_rename’stuview4’,‘stuv4’

2)将视图stuv4删除。
T-SQL语句:
drop view stuv4

(5)管理视图中的数据
1)从视图stuview2查询出姓名为“李勇”的学生资料。
T-SQL语句:
select *
from stuview2
where Sname=‘李勇’

2)向视图stuview2中插入一行数据。学号:200200001,姓名:赵军,性别:男,年龄:20,所在系:MA。
T-SQL语句:
insert
into stuview2
values(‘200200001’,‘赵军’,‘男’,20,‘MA’)

原student表中的内容有何变化?
在第一行增加了一个元组。

思考:如向视图stuview2中插入一行数据。学号:200200002,姓名:赵静,性别:女,年龄:20,所在系:MA。会出现什么样的结果?

数据受到影响,插不进去。
原Student表中的内容有何变化?
没有任何变化。

3)修改视图stuview2中的数据。
将stuview2中姓名为“赵军”同学的所在系改为“IS”。
T-SQL语句:
update stuview2
set Sdept=‘IS’
where Sname=‘赵军’

原student表中的内容有何变化?
没有任何变化。

4)从视图中stuview2将姓名为“赵军”同学删除。
T-SQL语句:
delete
from stuview2
where Sname=‘赵军’

原student表中的内容有何变化?
没有任何变化。

你可能感兴趣的:(数据库)