5实验五视图的创建与使用.docx
《5实验五视图的创建与使用.docx》由会员分享,可在线阅读,更多相关《5实验五视图的创建与使用.docx(13页珍藏版)》请在冰点文库上搜索。
5实验五视图的创建与使用
实验五视图的创立与使用
一、实验目的
(1〕理解视图的概念。
(2〕掌握创立视图、测试、加密视图的方法。
(3〕掌握更改视图的方法。
(4〕掌握用视图管理数据的方法。
二、实验内容
(1〕创立一个名为stuview2的水平视图,从数据库Student_info的Student表中查询出性别为“男〞的所有学生的资料。
并在创立视图时使用withcheckoption。
〔注:
该子句用于强制视图上执行的所有修改语句必须符合由Select语句where中的条件。
〕
createviewstuview2
as
select*fromStudent
whereSex='男'
withcheckoption
查看视图:
select*fromstuview2
(2〕创立一个名为stuview3的投影视图,从数据库Student_info的Course表中查询学分大于3的所有课程的课程号、课程名、总学时。
并在创立时对该视图加密。
〔提示:
用withENCRYPTION关键子句〕
createviewstuview3
withENCRYPTION
as
selectCno,Cname,Total_periorfromCourse
whereCredit>3
查看视图:
select*fromstuview3
(3〕创立一个名为stuview4的视图,能检索出“051〞班所有女生的学号、课程号及相应的成绩。
createviewstuview4
as
select*fromSC
whereSno=(
selectSnofromStudent
whereClassno='051'andSex='女')
查看视图:
select*fromstuview4
(4〕创立一个名为stuview5的视图,能检索出每位选课学生的学号、姓名、总成绩。
createviewstuview5
as
selectStudent.Sno学号,Sname姓名,Grade成绩
fromStudent,SC
whereStudent.Sno=SC.Sno
查看视图:
select*fromstuview5
假设出现如上图所示情况,
单击“查询〞→IntelliSense→刷新本地缓存
然后就解决了。
(1〕查看视图stuview2的创立信息。
sp_help查看
查询表sysobjects
a、sp_helpstuview2
b、
selectso.name,sc.name,sc.colid,st.name
fromsysobjectsso,syscolumnssc,systypesst
whereSO.id=SC.id
andSO.xtype='V'
andSO.status>=0
andSC.xtype=ST.xusertype
andSO.name='stuview2'
orderbySO.name,SC.colorder
(2)通过查看视图的定义脚本。
sp_helptext
sp_helptextstuview2
和表syscomments
〔提示:
视图的名称保存在表sysobjects的name列,定义脚本保存在表syscomments的text列〕
selectSO.name,SC.text
fromsysobjectsSO,syscommentsSC
whereSO.id=SC.id
andSO.xtype='V'
andSO.status>=0
andSO.name='stuview2'
3)查看加密视图stuview3的定义脚本。
sp_helptextstuview3
(1〕修改视图stuview3使其从数据库Student_info的Student表中查询总学时大于60的所有课程的课程号、课程名、学分。
〔提示:
假设视图原具有加密保护,修改视图时假设未加withencryption子句,那么修改后的视图不再加密。
〕
alterviewstuview3
withencryption
as
selectCno,Cname,CreditfromCourse
whereTotal_perior>60
查看视图:
select*fromstuview3
1〕用系统存储过程sp_rename将视图stuview4更名为stuv4。
sp_renamestuview4,stuv4
2)将视图stuv4删除。
dropviewstuv4
1〕从视图stuview2查询出班级为“051〞、姓名为“张虹〞的资料。
select*fromstuview2
whereClassno='051'andSname='张虹'
2〕向视图stuview2中插入一行数据,内容为:
学号姓名班级性别家庭住址入学时间出生年月
20210005赵小林054男南京2011/09/011993/01/09
insertintostuview2
values('20210005','赵小林','男','1993/01/09','054','2021/09/01',
'南京','CH','202111')
查看视图:
select*fromstuview2
3〕查询student,查看表中的内容有何变化。
Student表中已有“赵小林〞的信息
select*fromStudent
4〕向视图stuview2中插入一行数据,内容为:
学号姓名班级性别家庭住址入学时间出生年月
20210006赵静054女南京2021/09/011993/11/09
能成功插入吗?
原因何在?
不能插入,原因是目标视图或者目标视图所跨越的某一视图指定了WITHCHECKOPTION,而该操作的一个或多个结果行又不符合CHECKOPTION约束。
insertintostuview2
values('20210006','赵静','女','1993/01/09','054','2021/09/01',
'南京','CH','202111')
5〕修改视图stuview2中的数据。
stuview2中054班、姓名为“赵小林〞同学的家庭地址改为“扬州市〞。
updatestuview2
setHome_addr='扬州市'
whereHome_addr='南京'andSname='赵小林'andClassno='054'
查看视图:
select*fromstuview2
b.查询student,查看表中的内容有何变化
student表中的赵小林的家庭住址已发生了改变
select*fromStudent
6〕从视图stuview1中将班级为054、姓名为“赵小林〞同学删除。
deletefromstuview2
whereSname='赵小林'
查看视图:
【本文档内容可以自由复制内容或自由编辑修改内容期待你的好评和关注,我们将会做得更好】