数据库视图实验.docx
《数据库视图实验.docx》由会员分享,可在线阅读,更多相关《数据库视图实验.docx(11页珍藏版)》请在冰豆网上搜索。
数据库视图实验
甘肃政法学院
本科生实验报告
(五)
姓名:
***
学院:
信息工程学院
专业:
信息管理与信息系统
班级:
***
实验课程名称:
数据库原理
实验日期:
2014年5月29日
指导教师及职称:
**老师
实验成绩:
开课时间:
2013-2014学年第二学期
甘肃政法学院实验管理中心印制
实验题目
视图
小组合作
否
姓名
***
班级
****
学号
********
一、实验目的
1、掌握SELECT语句的语法
2、掌握基于单表的查询方法
3、掌握基于多表的查询方法
4、掌握相关与不相关的嵌套查询
5、掌握使用UNION的集合查询
二.实验环境
Windows7
SQLServer2005
实验室单人单机
三、实验内容与步骤
1.以最便捷的方式在EDUC数据库中新建3张表,各表的结构如下所示:
STUDENT的结构
列名
数据类型
宽度
空否
备注
sno
char
8
N
主码
sname
char
8
N
ssex
char
2
Y
默认值为“男”
取值“男”或“女”
sage
int
Y
sdept
char
10
Y
COURSE的结构
列名
数据类型
宽度
空否
备注
cno
char
2
N
主码
cname
char
30
Y
credit
int
Y
cpno
char
3
Y
SC的结构
列名
数据类型
宽度
空否
备注
sno
char
8
N
外码
合为主码
cno
char
2
N
外码
grade
int
Y
取值在0—100之间
2.利用企业管理器向表中插入记录
STUDENT的内容
COURSE的内容
SC的内容
3、实验内容
项目一:
创建视图
(一)创建视图
1.使用企业管理器创建视图
在EDUC库中以student表为基础,建立一个名为“V_计算机系学生”的视图。
在使用该视图时,将显示student表中的所有字段。
2.使用SQL语句创建视图
①在查询分析器中建立一个每个学生的学号、姓名、选修的课名及成绩的视图S_C_GRADE;
②建立一个所有计算机系学生的学号以及平均成绩的视图COMPUTE_AVG_GRAD。
(二)修改视图
1.使用企业管理器修改视图
在企业管理器中将视图COMPUTE_AVG_GRAD改成数学系的学生学号以及平均成绩的视图。
2.使用SQL语句修改视图
①在查询分析器中使用更改视图的命令将上面建立的视图“V_计算机系学生”更名为“V_计算机系男生”。
(三)删除视图
1.使用企业管理器删除视图
用企业管理器删除视图“V_计算机系男生”。
2.使用SQL语句删除视图
用SQL语句删除视图COMPUTE_AVG_GRAD。
项目二:
使用视图
(一)定义视图
1.定义计算机系学生基本情况视图v_computer;
2.将student,course,sc表中学生的学号、姓名、课程号、课程名、成绩定义为视图V_S_C_G;
3.将各系学生人数,平均年龄定义为视图v_num_avg;
4.定义一个反映学生出生年份的视图v_year;
5.将各位学生选修课程的门数及平均成绩定义为视图v_avg_s_g;
6.将各门课程的选修人数及平均成绩定义为视图v_avg_c_g。
(二)使用视图
1.查询平均成绩为90分以上的学生学号、姓名和成绩;
2.查询各课成绩均大于平均成绩的学生学号、姓名、课程号和成绩;
(三)修改视图
1.通过视图v_computer,分别将学号为“95001”和“95005”的学生姓名更改为“s1”和“s5”,并查询结果;
2.通过视图v_computer,新增加一个学生记录(’s12’,’yanxi’,19,’is’),并查询结果;
3.通过视图v_computer,新增加一个学生记录(’s13’,’yanxi’,19,’cs’),并查询结果;
4.通过视图v_computer,删除学号为“s13”的学生信息,并查询结果;
5.要通过视图V_S_C_G,将学号为“95005”的姓名改为“s12”,是否可以实现?
并说明原因。
6.要通过视图V_AVG_S_G,将学号为“95003”的平均成绩改为90分,是否可以实现?
并说明原因。
四、实验过程与分析
1、使用企业管理器创建视图
2、
createviewS_C_GRADE
as
selects.sno,sname,cname,gradefromstudents,course,sc
wheres.sno=sc.snoando=o
createviewCOMPUTE_AVG_GRAD(sno,Gavg)
as
selectsno,avg(grade)fromsc
wheresnoin(selectsnofromstudentwhere
sdept='CS')groupbysno
二、1、
2、sp_renameV_计算机系学生,V_计算机系男生
三、1、
2、dropviewCOMPUTE_AVG_GRAD
项目二
1、createviewv_computer
as
select*fromstudentwheresdept='CS'
2、createviewV_S_C_G
as
selects.sno,sname,o,cname,gradefromstudents,coursec,sc
wheres.sno=sc.snoando=o
3、createviewv_num_avg(num,avgAge)
as
selectcount(*),avg(sage)fromstudent
groupbysdept
4、createviewv_year(birth)
as
selectyear(getdate())-sagefromstudent
5、createviewv_avg_s_g(num,Gavg)
as
selectcount(*),avg(grade)fromscgroupbysno
6、createviewv_avg_c_g(num,Gavg)
as
selectcount(*),avg(grade)fromscgroupbycno
二、1、selectsnofromv_avg_s_gwhereGavg>90
2、selectsno,sname,cno,gradefromS_C_GRADE,v_avg_c_gwheregrade>Gavg
三、1、updatev_computersetsname='s1'wheresno='95001'
updatev_computersetsname='s5'wheresno='95005'
2、insertintov_computer(sno,sname,sage,sdept)
values('s12','yanxi',19,'is')
3、insertintov_computer(sno,sname,sage,sdept)
values('s13','yanxi',19,'is')
4、deletefromv_computerwheresno='s13'
5、updateV_S_C_Gsetsname='s12'wheresno='95005'
6、updateV_AVG_S_GsetGavg=90wheresno='95003'
五、实验总结
本次实验学会了视图的创建、删除以及使用,视图是从一个或几个基本表导出的表,是虚表。
对视图的基本操作最终也是对基本表的操作。
视图就像一个窗口,透过它可以看到数据库中数据的变化,也可以在一个视图上再定义一个新的视图。