视图

视图是虚表,是从一个或几个基本表(或视图)中导出的表,在系统的 数据字典中仅存放了视图的定义,不存放视图对应的数据。
视图是原始数据库数据的一种变换,是查看表中数据的另外一种方式。可以将视图看成是一个移动的窗口,通过它可以看到感兴趣的数据。 视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中。那些用于产生视图的表叫做该视图的 基表。一个视图也可以从另一个视图中产生。
视图的定义存在数据库中,与此定义相关的数据并没有再存一份于数据库中。通过视图看到的数据存放在 基表中。
视图看上去非常像数据库的物理表,对它的操作同任何其它的表一样。当通过视图修改数据时,实际上是在改变 基表中的数据;相反地,基表数据的改变也会自动反映在由 基表产生的视图中。由于逻辑上的原因,有些视图可以修改对应的 基表,而有些则不能(仅仅能查询)。

一、视图的创建:

1 创建信息系学生信息的视图 (is_view) ;
create view is_view(sno,sname,ssex,sage,sdept)
as
select *
from student
where sdept='IS';

2 创建信息系选修了1号课程的学生的视图;
create view is_1_view(sno,sname,ssex,sage,sdept)
as
select student.*
from student,sc
where student.sdept='IS' and sc.sno=student.sno and sc.cno=1;

3 建立信息系选修了1号课程且成绩在90分以上的学生的视图;
create view cs_1_90_view(sno,sname,ssex,sage,sdept)
as
select student.*
from student,sc
where student.sdept='IS' and sc.sno=student.sno and sc.cno=1 and sc.grade>90;

4 创建一个反映学生出生年份的视图
create view birth_view (sno,birth)
as
select sno,Year(GetDate())-sage
from student;

5 将所有女生的记录定义为一个视图;

create view nv_view(sno,sname,ssex,sage,sdept)
as
select *
from student
where ssex='女';
6 将所有学生的学号和他的平均成绩定义为一个视图S_G。
create view S_G(sno,savg)
as
select sno,avg(grade)
from sc
group by sno;

二、 视图结构的修改:

1 将视图 is_view 修改为信息系的所有女生的视图;
drop view is_view;

create view is_view(sno,sname,ssex,sage,sdept)
as
select *
from student
where sdept='IS' and ssex='女';
或者
alter view is_view
as
select sno,sname,ssex,sage,sdept
from student
where sdept='IS' and ssex='女';
 
三、查询视图

1 在信息系的学生视图中查询年龄小于20岁的学生:
select sno
from is_view
where sage<20;

2 查询信息系选修了1号课程的学生:

select sno
from is_1_view;
3 在视图S_G中查询平均成绩在90分以上的学生的学号和平均成绩:
select sno,savg
from S_G
where savg>90;

四、更新视图:

1 将信息系学生视图is_view中学号为“95002”学生姓名改为”刘辰”;

update is_view
set sname='刘辰'
where sno=95002;

2 向信息系学生视图is_view中插入一个新的学生记录, 学号为95029,姓名为”赵新”, 年龄为20岁;
insert
into is_view(sno,sname,ssex,sage,sdept)
values(95029,'赵新','男',20,'IS');

3 删除信息系学生视图is_view中学号为95004的学生的记录。
delete
from is_view
where sno=95004;
五、删除视图

1 删除视图is_view
drop view is_view;


另外视图表的查询和普通表的查询没有区别,视图表的更新会有一些限制。

由于视图是基于基本表的虚表,所以当基本表变化时视图也会跟着更新,因此一些复杂的连表查询可以直接把需要的数据生成一个视图


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值