实验8 视图
一、实验目的:
(1) 理解视图的概念。
(2) 掌握创建、更改、删除视图的方法。
(3) 掌握使用视图来访问数据的方法。
二、实验要求
1、学生提前准备好实验报告,预习并熟悉实验步骤;
2、遵守实验室纪律,在规定的时间内完成要求的内容;
3、1~2人为1小组,实验过程中独立操作、相互学习。
三、实验内容及步骤
1、使用SQL语句创建、管理视图
(1) 创建视图。
① 创建一个名为sc_view1的视图,从数据库gradem的sc表中查询出成绩大于90分的所有学生选修成绩的信息。
create view sc_view1
as select *from sc
where degree>90;
② 创建一个名为sc_view2的视图,从数据库gradem的sc表中查询出成绩小于80分的所有学生的学号、课程号、成绩等信息。
create view sc_view2
as select sno,cno,degree
from sc
where degree<80
③ 创建一个名为sc_view3的视图,由数据库gradem的student、course、sc表创建一个显示“20070303”班学生选修课程(包括学生姓名、课程名称、成绩等信息)的视图。
create view sc_view3
as
select sname,cname,degree,b.cno
from xscj.student a,xscj.sc b,xscj.course c
where a.sno=b.sno AND b.cno=c.cno
And sclass=‘计科1班’;
④ 创建一个从视图sc_view1中查询出课程号“c01”的所有学生的视图。
create view sc_view4
as
select * from sc_view1
where cno =’c01’;
(2) 修改视图的定义。
修改视图sc_view1,使其从数据库gradem的sc表中查询出成绩大于90分且第3学期的所有学生选修成绩的信息。
alter view sc_view1
as select sno,degree
from sc a,kc b
Where a.cno=b.cno and a.degree>90 and b.cterm=3;
(3) 视图的删除。
① 将视图sc_view1删除。
drop view sc_view1;
(4) 管理视图中的数据。
① 从视图sc_view2中查询出学号为“2007030125”、课程号为“a01”的学生选修成绩的信息。
select degree
from sc_view2
where sno=081104 and cno=206;
② 将视图sc_view2中学号为“2007030122”、课程号为“c02”的成绩改为87。
update sc_view2
set degree=87
where sno=081104;
③ 从视图sc_view2中将学号为“2007030123”、课程号为“a01”的学生信息删除。
delete from sc_view2
where sno=081106 and cno=210;
四、思考题
(1) 视图上能创建索引吗?
不能,索引是要占用存储空间的,也只能创建在占有存储空间的对象上,而视图是select语句的结果集,是放在内存中的数据,所以不能在视图上创建索引。
(2)向视图中插入的数据能进入到基本表中去吗?
可以的,修改视图的数据直接影响基本表的数据。 因为视图本身不保存数据,只保存数据的来源这些内容
(3)修改基本表的数据会自动反映到相应的视图中去吗?
视图是一个虚拟表,其内容由查询定义。 视图中的数据是由一张或多张表中的数据组成的。 如果你改动了基本表,你的视图来源于这个基本表,那视图给你呈现的结果也会随之发生变化。