注:此内容仅仅只是记录成长与分享学习,不能保证绝对正确
实验六 视图创建与管理
实验日期: 2022 年 5 月 13 日 星期 五 实验地点: 宿舍
一 实验目的
1. 在可视化管理环境中创建、删除视图,浏览视图。
2. 熟练掌握视图的定义和删除的SQL语句。
3. 掌握对视图的查询、更新等操作,理解可更新视图以及不可更新视图的实质。
二 实验要求
1. 请大家务必动手完成实验,实验过程中,会随机抽查提问,作为实验成绩重要参考。
2. 请将数据库studb的两个基本文件自行保留,下次实验在此基础上进行。
3. 请在本实验报告指定方框认真填写对应的实验代码或实验结果。
三 实验内容
1. 在可视化管理环境中创建、删除视图,以及对视图进行浏览。
2. 运用SQL语句创建可更新的简单视图和包含聚合函数的不可更新视图。
3. 运用SQL语句对所创建的视图进行查询、更新。
四 实验步骤
附加前述数据库,按下述要求完成实验:
1. 使用向导在可视化管理环境中创建管理视图
1)创建一个连接三个表(S,C,SC)的视图(假设将该视图命名为S_C_SC),视图含SNO,SNAME,CNAME,SCORE共四个字段。
首先,选择创建视图菜单,如图6.1所示:
图6.1 创建视图快捷菜单
其次,在如图6.2窗口中添加本视图所关联的三个数据表S、C、SC。
图6.2 添加表
添加表后出现如图6.3所示窗口,此窗口中形象地展示了三个表之间的外键关联关系,自动产生了创建视图的SQL指令。在此基础上选择要显示的属性,保存并命名视图(S_C_SC)即可。创建视图结果如图6.4。
图6.3 创建视图可视化窗口
图6.4 视图创建结果
2)浏览视图 右击视图(dbo.S_C_SC),通过选择快捷菜单项“打开视图”即出现如图6.5所示的视图浏览结果,还可以通过快捷菜单对视图进行修改等其他操作。
图6.5 视图查询结果
3)删除视图 通过drop命令实现,SQL命令为:
drop view S_C_SC |
2. 运用SQL语句创建视图
1)创建视图CS_VIEW,该视图含全体计算机系学生,要求带WITH CHECK OPTION选项。
SQL命令为:
create view CS_VIEW as select* from S where DNAME='计算机' with check option |
2)创建一个包括学生的学号及其各门功课的平均成绩的视图S_G_VIEW,完善并执行下述SQL命令:
CREATE VIEW S_G_VIEW (SNO,GAVG)
AS
SELECT SNO , AVG(SCORE) FROM SC
GROUP BY SNO ;
3. 通过SQL语句对视图进行查询
1)在视图CS_VIEW上查询出年龄小于20的学生。
SQL命令为:
select * from CS_VIEW where AGE<20 |
2)在S_G_VIEW视图上查询平均成绩为80分以上的学生的学号及平均成绩。
SQL命令为:
SELECT * FROM S_G_VIEW where GAVG>=80; |
4. 通过SQL语句对视图进行更新
1)更改视图CS_VIEW中所含的某个学生,将其年龄改为15,SQL命令为:
update CS_VIEW set AGE=15 where SNO='S1' |
若更新成功,在下框填“成功”,若失败,请解释原因:
成功 |
2)更改视图CS_VIEW中所含的某个学生,将其所在系改为”电子” ,SQL命令为:
update CS_VIEW set DNAME='电子' where SNO='S1' |
若更新成功,在下框填“成功”,若失败,请解释原因:
失败,原因是目标视图或者目标视图所跨越的某一视图指定了 WITH CHECK OPTION,而该操作的一个或多个结果行又不符合 CHECK OPTION 约束。 |
3)在S_G_VIEW视图上将其中某个学生的平均成绩改为90分,SQL命令为:
update S_G_VIEW set GAVG=90 where SNO='S1' |
若更新成功,在下框填“成功”,若失败,请解释原因:
失败,因其包含派生域或常量域。(视图中含有库函数AVG(),不允许更新) |
五 自选动作
请在下框填写除了上述实验内容之外自选的实验内容:
创建视图S_C_SC_VIEW,含属性SNAME,CNAME,SCORE三个字段 create VIEW S_C_SC_VIEW as select S.SNAME,C.CNAME,SC.SCORE from S,C,SC where S.SNO=SC.SNO and C.CNO=SC.CNO |
六 实验总结
通过本次实验,使我掌握了视图的两种创建方式,查询以及更新的SOL语句,以及一些不能对视图进行更新的情况,比如在有 WITH CHECK OPTION时,更新就有可能由于不符合 CHECK OPTION 约束而失败,还有在视图定义中有GROUP BY 语句时,是直接不允许对视图进行更新的等等,还有很多情况都不被允许对进行更新 |
成绩