【数据库概论】3.3 视图

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

视图

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

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.视图能够对机密数据提供安全措施
视图机制可以针对不同用户设计不同的视图而不是让用户直接操作基本表。这使得一些机密的数据可以不展现给权限较低的用户

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: 数据库