实验六:关系图、索引和视图的定义及维护
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六:关系图、索引和视图的定义及维护
一、实验目的
1.掌握创建关系图的方法。
2.掌握创建、查看和删除索引的操作和方法。
3.理解视图的含义,能使用SQL Server企业管理器创建视图并对其进行管
理。
二、实验环境
已安装SQL Server 企业版的计算机(120台);
具有局域网环境,有固定IP;
三、实验学时
2学时
四、实验要求
1.索引和视图的创建和管理也可以用查询分析器实现,参照课本上的相关
Transact-SQL命令,写出对应的Transact-SQL实现代码。
2.将视图的创建、修改、删除过程与实验二中表的创建、修改、和删除进
行对照,看看有什么相同点和不同点。
3.完成实验报告;
五、实验内容及步骤
以系统管理员身份登录到SQL Server服务器,在SQL Server2005界面中实现第1题操作,其余题目用SQL Server2005界面及T-SQL 语句实现:
1.使用创建数据库关系图向导为学生选课数据库中的Student表,Course
表,SC表创建关系图。
2.为Student表创建一个基于Sname(姓名)的按降序排列的聚簇索引
Stusname。
CREATE CLUSTERED INDEX Stusname ON
Student(Sname DESC)
3.为学生—课程数据库中的Student,Course,SC 3 个表建立索引。其中
student按学号升序建唯一索引,course按课程号升序建唯一索引,SC
按学号升序和课程号降序建唯一索引,索引名称分别为
Stusno,Coucno,Scno。
CREATE UNIQUE INDEX Stusno ON Student(Sno);
CREATE UNIQUE INDEX Coucno ON Course(Cno);
CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);
4.删除 Student表中的Stusname索引。
DROP INDEX student.Stusname
5.创建信息系男学生基本信息视图stu_is,包括学生的学号、姓名及年龄,
并要求进行修改和插入操作时仍需保证该视图只有信息系的学生。CREATE VIEW stu_is
AS
SELECT sno,sname, sage,ssex,sdept from student
Where sdept = ‘IS’ and ssex=‘男’
WITH CHECK OPTION
6.建立信息系选修了1号课程的学生视图stu_is_c1(学号,姓名,成绩)。CREATE VIEW stu_is_c1(学号,姓名,成绩)
AS
SELECT Student. Sno,Sname,Grade
FROM Student,SC
WHERE Sdept= 'IS' AND
Student.Sno=SC.Sno AND
o= '1'
7.建立信息系男同学年龄在19岁以上学生信息的视图stu_is_age。(使用
第5题的视图)
CREATE VIEW stu_is_age
AS
SELECT Sno,Sname,sage
FROM stu_is
WHERE sage>19
8.查询信息系男同学年龄在19岁以上的学生信息。
SELECT * From stu_is_age
WHERE sage>=19
9.查询信息系选修了1号课程且成绩大于 80的学生成绩信息。
SELECT * FROM stu_is_c1
where grade>80
或SELECT Student.Sno,Sname ,grade
FROM Student,SC
WHERE Student.Sno =SC.Sno AND o= '1‘AND sdept=‘CS’and grade>80
10.向视图stu_is中插入一个新的学生记录,学号为200515027,姓名为王
唔,年龄为20。
Insert into stu_is
Values('200515027','王唔',20)
11.向视图stu_is_c1中插入一个新的学生记录,学号为200515027,姓名
为王唔,成绩为60。
Insert into stu_is_c1
Values('200515027','王唔',60)
视图或函数 'stu_is_c1' 不可更新,因为修改会影响多个基表。
12.将视图stu_is中学号为“200515004”的学生姓名改为“张珊”。update stu_is
set sname='张珊'
where sno='200515004‘
13.将视图stu_is_c1中学号为“200515006”的学生成绩改为75。Update stu_is_c1
Set grade=75
Where sno='200515006‘
14.删除视图stu_is中学号为“200515020”的学生记录。
DELETE
FROM stu_is
WHERE Sno= ' 200215020 ‘
15.将stu_is视图修改为只包含信息系学生学号、姓名及年龄。
Alter view stu_is
AS
Select sno,sname,sage from student
Where sdept =‘IS’
16.同时删除视图stu_is和stu_is_age。
drop view stu_is , stu_is_age
思考题:1.考虑一下视图的作用,在什么样的情况下需要建立视图?
视图的作用:
1. 视图能够简化用户的操作;
2. 视图使用户能以多种角度看待同一数据;
3. 视图对重构数据库提供了一定程度的逻辑独立性;
4. 视图能够对机密数据提供安全保护;
5. 适当的利用视图可以更清晰的表达查询。
不需要对数据库中的表进行修改内容只是查询时可建立视图
2.索引、视图和基本表有什么不同 ?
索引是基本表的目录。
视图可以理解为保存后的查询,它保存的是‘实在’表格经查询后的结果。