任课教师:舒挺
《数据库原理及应用》
(2013-2014学年第1学期)
实
验
报
告
学号:
姓名:
班级:
实验四数据库的视图定义及维护
一、实验目的:
本实验的目的是使学生掌握视图的定义与维护操作,加深对视图在关系数据库中的作用的理解。
二、相关知识:
视图是根据子模式建立的虚拟表。
一个视图可以由一个表构造,也可以由多个表构造。
利用企业管理器和视图创建向导进行创建,查看和修改视图就如同对表的操作一样,非常容易。
三、实验内容:
本实验的主要内容是:
1)创建和删除视图
2)查询和更新视图
具体完成以下例题。
例1 建立信息系学生的视图
例2 建立信息系学生的视图,并要求进行修改和插入操作时仍须保证该视图只有信息系的学生。
例3 建立信息系选修了’ 1’号课程的学生视图
例4 建立信息系选修了’1’号课程且成绩在90分以上的学生视图
例5 定义一个反映学生出生年份的视图
四、实验步骤
1.创建视图
下面利用了SQL Server中提供的视图创建向导,来实现例3(建立信息系选修了1号
课程的学生视图)。
1)打开企业管理器窗口,确认服务器,打开数据库文件夹,选中新视图所在的数据库(此例为学生选课数据库)。
2)选择菜单:[工具]|[向导]
3)在如图1所示的向导选择对话框中,单击数据库左边的“+”号,使之展开。
选择“创建数据库向导”项,单击“确定”按键。
4)进入创建视图向导后,首先出现的是欢迎使用创建视图向导对话框,其中简单介绍了该向导的功能。
单击“下一步”后,就会出现选择数据库对话框。
5)在选择数据库对话框中,选择视图所属的数据库。
本例的数据库为“学生管理”。
单击“下一步”按键,则进入选择表对话框。
6)在选择表对话框中,列出了指定数据库中所有用户定义的表。
用户可以从中选择构造视图所需的一个表或者多个表,被选中的表成为构造视图的参考表。
选择构
造视图参考表的方法是:用鼠标单击表后的“包含在视图中”列,使复选框为选
中状态。
本例的数据库中只有student表和sc表,它们都应当被选中。
单击“下一步”按键,则进入选择对话框。
7)列选择对话框中以表格形式列出了创建视图参考表的全部属性,每个属性占表的一行,创建视图参考属性可以在表格中选出。
选择视图参考属性的方法是用鼠标
单击属性名后边的“选择列”列,使复选框为选中状态。
本例中student.sno,
student.sname和sc.grade属性要被选中。
单击“下一步”按键,进入创建视图的定义限制对话框。
8)在定义限制对话框中,输入表的连接和元组选择条件。
本例输入“Sdept=’IS’ AND student.sno = sc.sno AND o = ‘1’”。
单击“下一步”按键,出现视图名对话框。
9)在输入视图名对话框中输入所建视图的标识名。
本例的视图名为“IS—C1”。
单击“下一步”按键,则出现视图创建完成对话框。
在完成对话框中给出了根据前面对话框输入的内容译成的SQL语句。
您可以认真
阅读该SQL语句,如果发现与要求有不符合之处可以直接进行修改。
确认无误后单击“完成”按钮。
随后出现一个通知用户已成功创建视图的信息框,
单击“确认”按钮后,整个创建视图工作就完成了。
2.查看和修改视图
视图创建好后,就可以利用它进行查询信息了。
如果发现视图的结构不能很好地满足要求,还可以在企业管理器对它进行修改。
在企业管理器中修改视图结构需要首先选择服务器,数据库,并使数据库展开,然后用鼠标右击要修改的视图,在弹出的菜单上选择“设计视图”项,则弹出一个视
图设计对话框。
当对其修改完毕后关闭窗口,新的视图结构就会取代原先的结构。
3.将查询需求用SQL语言表示;在SQL查询分析器的输入区中输入SQL查询语句;设置查询分析器的结果区为Standard Execute(标准执行)或Execute to Grid(网格执行)方式;发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进行修改,直到正确为止。
五、实验代码及结果
1、先还原数据库,并建立正确的关系图
2、创建视图
可通过SQL语句创建,也可直接单击鼠标右键,选择新建视图。
例1 建立信息系学生的视图
SQL语句
运行结果新增视图
视图界面
分析:CREAT VIEW语句的结果只是把视图的定义存入数据字典,并不执行其中的SELECT语句,只是对视图进行查看时,才将数据查出。
即建立IS_Student视图来存放信息系学生的查询结果,通过WHERE子句来给顶条件在student表中查询相应结果。
例2 建立信息系学生的视图,并要求进行修改和插入操作时仍须保证该视图只有信息系的学生SQL语句
运行结果新增视图
视图界面
分析:在定义IS_Student2视图时加上WITH CHECK OPTION子句,以后对该视图进行插入、修改和删除操作时,RDBMS会自动加上“Sdept=‘IS’”的条件,即可以保证该视图只有信息系学生。
例3 建立信息系选修了’ 1’号课程的学生视图
SQL语句
运行结果新增视图
视图界面
分析:在IS_Student3视图中包含了student表与sc表的同名列Sno,则需要在视图名后面明确说明视图的各个属性列名。
然后再根据具体条件进行查询。
例4 建立信息系选修了’1’号课程且成绩在90分以上的学生视图
SQL语句
运行结果新增视图
视图界面
分析:IS_Student4视图是建立以定义好的IS_Student3视图之上的。
在建立IS_Student4视图时,直接根据相应的条件在已经定义好的视图IS_Student3上进行进一步的查询而得到最后的结果。
例5 定义一个反映学生出生年份的视图
SQL语句
运行结果新增视图
视图界面
分析:IS_Student5视图是一个带有表达式的视图,视图中的出生年份可通过当前的年份减去年龄得到。
六、实验心得。