【数据库概论】3.3 视图

视图

视图是从一个或者数个表中导出的数据的集合,数据库只存放视图的定义,而不存放视图对应的数据,这些数据依然在原来的表中。

1.定义视图

建立视图语句如下:

CREATE VIEW [(col name list)]
AS <子查询>
[WITH CHECK OPTION];

WITH CHECK OPTION表示对视图进行update\insert\delete的操作时要保证更新插入或者删除的行满足视图定义中的谓语条件。
举例,建立信息系学生的全部视图:

CREATE VIEW IS_Student
AS SELECT Sno, Sname, Sage FROM Student
WHERE Sdept=‘IS’
WITH CHECK OPTION

如果一个视图是从单个基本表导出的,并且只是去掉了基本表的某些行和列的,但是保留了主码的,则称这类视图为行列子集视图,上面的IS_Student就是行列子集视图

视图不仅可以建立在表上,也可以在几个视图上建立视图,或者在几个视图和表上建立新视图

可以使用带有聚集函数和GROUP BY的子句函数来查询定义视图,这种视图被称为分组视图

2.删除视图

DROP VIEW <视图名> [CASCADE]

3.查询视图

关系型数据库管理系统执行对视图的检查的时候,首先进行有效性检查,检查视图所涉及的表、视图是否存在。如果都存在,那么从数据字典中取出视图的定义,把定义中的视图和用户查询结合起来,然后转化为等价的对基本表的查询,然后执行该查询。这一转换过程称之为视图消解
比如建立信息系学生的全部视图:

CREATE VIEW IS_Student
AS SELECT Sno, Sname, Sage FROM Student
WHERE Sdept=‘IS’
WITH CHECK OPTION

然后对视图执行查询操作:查询信息系中年龄小于20的学生

SELECT Sno, Sage FROM IS_Student
WHERE Sage<20

系统执行视图消解后会将其转化为普通查询操作:

SELECT Sno,Sage FROM Student
WHERE Sage<20 AND Sdept=‘IS’

4.更新视图

更新视图是对视图进行CRUD,但是由于视图只是一张虚表,因此对视图的操作最终会转化为对基本表的操作。和查询视图一样,更新视图也是用视图消解转化为对基本表的更新的

更新视图的SQL语句实际上和对基本表CRUD差不多,只是将表名从基本表更换为视图

5.视图的作用

1.视图可以简化用户的操作
视图可以根据用户需求将若干张表组成虚表,用户直接查询视图便可得出所需数据,而不需要关注视图背后复杂的组成逻辑。相当于在数据库基本表之上再封装了一层。
2.视图对重构数据库起到了一定逻辑独立性
数据的逻辑独立性指的是,当数据库重构时,如果进行添加新表或者在原有表上添加新字段,用户的应用程序不会受到影响。而视图是对基本表的抽象,提供了一定的逻辑独立性
3.视图能够对机密数据提供安全措施
视图机制可以针对不同用户设计不同的视图,而不是让用户直接操作基本表。这使得一些机密的数据可以不展现给权限较低的用户

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值