数据库学习笔记和小练习(5)视图

视图是从一个或几个基本表(或视图)导出的虚表。所谓虚表是指数据库中值存放视图的定义,不存放视图对应的数据,数据仍然存放在原来的基本表中。

1.定义视图

create view....

as...

[ with check option]

(这一句的意思是对视图进行update  insert  delete操作的时候要保证相应的行为满足试图定义中的谓词条件。

(更新一个视图将更新其基表,而且不是所有的视图都是可更新的:很多都不可以)

比如包含有:分组,联结,子查询,并,聚集函数,distinct,导出(计算)列的时候都不可以。

(但是,一般应该将试图用于检索,而非更新)

create view IS_Student
as
select Sno,Sname,Sage
from Student
where Sdept='IS'
with check option;
这里省略了视图的列名,隐含的由子查询select语句的三个列名组成

create view Is_S1(Sno,Sname,Grade)
as
select Student.Sno,Sname,Grade
from Student,sc
where
Sdept='IS' and
student.Sno=SC.Sno and
SC.Cno='1';
建立了信息系选修1号课程的学生的视图,信息包含了两个表,所以要连接,除此之外,where需要表名信息系和1号课,所以三个条件是清晰地,因为sno是两个表的同名列,所以视图定义需要指出名字。

create view S_G(Sno,Sbirth)
as
select Sno,avg(Grade)
from sc
group by Sno;

这是使用了分组和聚集函数的分组视图。


2.删除视图

drop view S_G;

注意:如果要删除的视图上导出了视图,那么需要加上cascade才能删除成功。


3.查询视图

像对基本表一样查询即可。

select ... from 视图名;

举例:

select IS_Student.Sno,Sname
from Is_Student,sc
where IS_Student.Sno=sc.Sno and SC.Cno='1';

4.更新视图

由于视图是不实际存储数据的虚表,因此对视图的更新最重要转换为对基本表的更新

注意:对视图的更新转化为对基本表的增,删,改的时候,要注意基表上建立视图时候的where条件



5 修改视图


(1)alter view 视图名 as 新的select语句。

(2)先drop删掉视图,再create重建。


6.查看视图的创建

show create view viewname;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值