数据库应用设计实验报告
实验名称:_____实验4 视图和索引______ 实验类型:_________验证型实验_________ 实验环境:_________ PC机____________ 指导教师:__ 吕 琳____ ___ 专业班级:__________计科0802班________ 姓 名:____________邓浩江____________ 学 号:_______ __20088183____ ______ 联系电话:________ 15883772721______ _ 电子邮件:_ 187041833@qq.com__ _ 实验地点:____________________________ 实 验 日 期: 2011 年 4 月 20 日 实验报告日期: 2011 年 4 月 23 日
成绩:__________________________
一、 实验目的
1.理解视图的作用
2.熟练掌握用SQL语句来创建视图,对视图进行查询和取消视图的操作 3.了解索引的优缺点
4.掌握用SQL语句来创建索引和删除索引
二、 实验平台
PC机,操作系统为windows2000,SQLsever2000
三、 实验步骤、出现的问题及解决方案(不能解决的将问题列出) 本次实验是在前3次实验的基础上进行的, 建立视图,查询视图,更新视图,
删除视图,建立索引,删除索引。前几次的代码就不在这里展示了。
1. 建立计算机系学生的视图CS_Student,并要求进行修改和插入操作时仍需保
证该视图只有计算机系的学生,视图的属性名为学号,姓名,年龄,所在系。
AS
2. 建立学生的学号、姓名、选修课程名及成绩的视图Student_Grade。
CREATE VIEW Student_Grade AS SELECT 学生表.学号,姓名,课程名,成绩 from 选课表,课程表,学生表 WHERE 学生表.学号=选课表.学号 AND 选课表.课程编号=课程表.课程编号 CREATE VIEW CS_Student SELECT 学号,姓名,年龄 FROM 学生表,院系表 WHERE 院系名称='计算系' WITH CHECK OPTION 3. 定义一个反映学生出生年份的视图。
CREATE VIEW Student_Birth(学号,姓名,出生年份) AS SELECT 学号,姓名,2011-年龄 FROM 学生表 4. 在计算机系的学生视图CS_Student中找出年龄小于20岁的学生姓名和年龄。
5. 在Student_Grade视图中查询成绩在85分以上的学生学号、姓名和课程名。
6. 将计算机系学生视图CS_Student中学号为200515126的学生姓名改为“林敏”。
update CS_Student SET 姓名='林敏' where 学号='200515126' select * from Student_Grade where 成绩>85; SELECT 姓名,年龄 from CS_Student WHERE 年龄<20; 7. 向计算机系学生视图CS_Student中插入一个新的学生记录,其中学号为
“200515127”,姓名为“蒋海”,年龄为20岁。
8. 删除计算机系学生视图CS_Student中学号为“200515127”的记录,若不能
删除,请说明原因。
delete from CS_Student where 学号='200515127'; /*CS_Student' 不可更新,因为修改会影响多个基表,视图不是实表,是虚表 ,因此有些视图的更新不能唯一地有意义地转换成对相应基本表的更新*/ INSERT INTO CS_Student VALUES('200515127','蒋海','20') 9. 删除视图Student_Grade。
10. 为“zjs”数据库中的学生,课程,成绩三个表建立索引。其中学生表按学号
升序建立唯一索引,课程表按课程号升序建立唯一索引,选课表按学号升序和课程号降序建立唯一索引。
CREATE UNIQUE INDEX INDEX_学生 ON 学生表 (学号) CREATE UNIQUE INDEX INDEX_课程 ON 课程表 (课程编号) CREATE UNIQUE INDEX INDEX_选课 ON 选课表 (学号,课程编号 DESC) drop view Student_Grade 11. 删除基本表选课上的选课_SCno索引。
/*此题的意思是删除前面建立好的索引*/ DROP INDEX 选课表.INDEX_选课
实验分析与思考
1. 实验过程中,出现的问题及解决方案(不能解决的将问题列出)
第8题删除计算机系学生视图CS_Student中学号为“200515127”的记录,在输入代码后发现不能删除,因为CS_Student' 不可更新,修改会影响多个基表,视图不是实表,是虚表 ,因此有些视图的更新不能唯一地有意义地转换成对相应基本表的更新。最后一道题删除基本表选课上的选课_SCno索引,开始也出现了一些问题,后来问了老师,才清楚这道题的意思其实就是删除前面建立好的索引。
2. 试分析对于视图查询和基本表的查询,哪一个效率更高,为什么?
视图查询的效率更高。视图能够简化用户的操作,通过定义视图,使数据库看起来结构简单、清晰。
3. 通过实验考察WITH CHECK OPTION这一语句在视图定义后产生的影响,包括对修改、删除、插入操作的影响。
WITH CHECK OPTION表示对视图进行UPDATE,INSERT和DELETE操作时要保证更新,插入或删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)。如第一题中,由于在定义CS_Student视图时加上了WITH CHECK OPTION子句,以后对该视图进行插入,修改和删除操作时,RDBMS会自动加上院系名称='计算系'的条件。
4. 对于基本表的PRIMARY KEY列,我们是否需要为其建立索引,为什么?(提示:可以使用sp_helpindex查看基本表中索引的信息)
需要 当为表指定 PRIMARY KEY 约束时,通过为主键列创建唯一索引,从而禁止重复的索引或键值,当在查询中使用主键时,该索引还可用来对数据进行快速访问。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库数据库视图和索引实验报告在线全文阅读。
相关推荐: