实验报告实验九.docx
《实验报告实验九.docx》由会员分享,可在线阅读,更多相关《实验报告实验九.docx(11页珍藏版)》请在冰点文库上搜索。
实验报告实验九
实验报告
专业:
计算机科学与技术班级:
10科技2学号:
201024131234姓名:
黄萍课程名称:
数据库系统原理2011-2012学年度第2学期
课程类别:
专业必修实验时间:
2012年4月18日
实验名称:
数据视图
实验目的和要求:
1.加深对数据视图作用的理解
2.掌握应用视图有选择性地查看所需数据的方法
3.掌握通过视图更改数据表中数据的方法。
4.掌握创建视图的实现方法
5.掌握更新视图的实现方法及理解视图更新操作的有关规定
6.掌握删除视图的实现方法
实验软硬件要求:
安装有windows2000、windowsXP或windowsNT操作系统的计算机一台;同时
还要安装有microsoftSQLServer2000或SQLServer2000任意版本,实验开始前
还要有创建好的SCDB数据库和ShiYan数据库附加到当前SQL数据库服务器中。
实验内容、实验过程、所遇问题及其解决方法
见附页
实验总结及心得体会:
实验过程中学会了对视图的创建,更新,和删除等多种操作。
但是经常犯一些小错误,
有时候对题目理解不够。
总的来说,这次的实验做得比较顺利,这都得益于认真听课和实验前先看书。
学习的兴趣也浓厚了很多。
批阅教师:
评定成绩:
实验内容:
针对实验数据库ShiYan,完成以下有关视图操作任务
1、分别用“企业管理器”和Transact_SQL语言为S表的SNO和
SNAME属性建立名为S_View的视图
SQL脚本程序如下:
createviewS_Viewasselectsno,snamefroms
创建的视图如下:
|EiLanie
£1
S2
S3
东方红
S4
35
2、为三建工程项目建立一个名为SanJian_View的供应情况视
图,该视图包括供应商代码(SNO),零件代码(PNO),供应数量(QTY)。
SQL脚本程序如下:
第一次:
createviewSanJian_View
Asselectsno,pno,qty
fromspj,j
wherespj.jno二j.jnoandjname='三建'
查询结果:
有视图,但没有没有数据
修改后:
createviewSanJianView
asselectsno,pno,qtyfromspj,j
wherespj.jno二j.jnoandjnamelike'三%建'
运行结果正确,创建了符合条件的视图
创建的视图如下:
SH4
1昨
1卅
卜
S2
P5
400
S4
F5
100
3、在SanJian_View中找出三建工程项目使用的各种零件代码及
其数量
SQL脚本程序如下:
selectpno,sum(qty)
fromSanJian_Viewwherejnamelike'三%建'
运行结果:
列名jname无效
参考脚本程序:
selectpno,sum(qty)
fromSanJian_View
groupbypno
错误原因:
视图中没有jname这一属性列,故无效;由
(2)知该视图是为三建工程建的了;不必再以“三建工程”为查询条件。
运行结果:
pnc
(无列名)
1
F5
500
4、在SanJian_View中找到供应商S1的供应情况。
SQL脚本程序如下:
select*
fromSanJian_View
wheresno二's1'
运行结果如下:
5、建立颜色为红色且重量大于10的零件视图P_View.
SQL脚本程序如下:
createviewP_View
asselect*
fromp
wherecolor='红'andweight>10
创建的视图如下:
1旧血E
colcr
6、将供应商号以及它为所有工程所供应的零件总数定义为一个视
图S_Q_View.
SQL脚本程序如下:
createviewSQViewasselectsno,sum(qty)
fromspj
groupbysno
运行结果:
创建视图或函数失败,因为没有为第2列指定列名
修改后:
createviewS_Q_View(sno,sumqty)
asselectsno,sum(qty)
fromspj
groupbysno
错误原因:
没有创建属性列列名,和表的查询一样,存在的属
性列才能查询
创建的视图如下:
7、在SPJ表上按属性SNO分组,求出每组在属性QTY上属性上的最大值、最小值和平均值,且将它们置于视图RVE_View中,然后查询RVE_Viewz中供应商号为S4的记录。
参考SQL脚本程序:
createview
RVE_View(sno,qtyMax,qtyMin,qtyMvg)
asselectsno,max(qty),min(qty),avg(qty)fromspj
groupbysno
go
select*
fromRVE_View
wheresno二's4'
运行结果:
sncqtyllaxqty^inqtyMvg
I
S43UQ1QQ2G01
8、将S_View视图中供应商号为S5的供应商名修改为“为国”
并查询S表的修改结果。
SQL脚本程序如下:
updateS_View
setsname='为国'
wheresno二's5'
go
select*fromS
查询结果:
sno
sname
artus
cityphone
益褊红盛
方蠢国H盛«丰拘12345ssssS
320
NULL
310
北京
NU1L
330
北京
NULL
320
天津
FU1L
30
上海
NULL
9、在S_View视图中插入一个新的记录,供应商号为S6,供应商名
为“华誉”,并查询S表的修改结果
SQL脚本程序:
insertintoS_View
values('s6','华誉')select*fromS
运行结果:
sno3ftAffi.fistatus
cityrhons
1
引精益320
天津HULL
2
£2盛锡310
北京HULL
3
S3求方虹330
托京HULL
4
S4丰春盛320
夭港NULL
5
S5丸国30
上潯NULL
6
sG华芝MULL
NULL000000000000
10、删除SanJian_View视图中供应商号为S1的相应记录。
SQL脚本程序如下:
delete
fromSanJian_View
wheresno二's1'
select*fromspj
11、为视图S_View建立供应商名SNAME的视图
S_Sname_View。
SQL脚本程序如下:
createviewS_Sname_View
asselectsname
fromS_View
运行结果:
►韬益
东方红
丰泰番
対国
华管
12、将视图S_View改名为SS_View
SQL脚本程序如下:
execsp_rename's_view','ss_view','object'
运行结果:
注意三更改对象名的甘T盼郁可龍磯坏脚本和再储过昆
cbject已重弗名为3ss_vi&v/r<
13、分别用“企业管理器”和Transact_SQL将视图SS_View做如下修改:
在SS_View中新增一列,列名为CITY,并且要求CITY属性值为“上海”。
SQL脚本程序如下:
alterviewSS_View
asselectsno,sname,city
fromswherecity二'上海
运行结果:
go
STLame
ci+y
►
*
S5
为国
上函
14、分别用“企业管理器”和Transact_SQL语言删除视图SS_View
SQL脚本程序如下:
DropviewSS_View
15、在SQLServer2000的“企业管理器”中分别在已经存在的基
本表和视图表上单击右键,然后分别选择“设计表”和“设计视图”,在弹出的“设计表”和“设计视图”子界面上比较“基本表”和“视图表”之间的区别。
解:
视图中看到的数据在数据库中并不存储,基本表中的数据存储在数据库中。
数据库中只存储视图的定义,当用户请求从视图中查询数据时,数据将从相应的基本表中检索出来。
设计表:
设计视图: