数据库系统概论之视图

1:视图定义

视图是从一个或者多个基础表(或视图)导出来的表,它与基础表不同,是一张虚拟表。数据库中存在视图的定义,并不存放视图对应的数据,这些数据将保存在原来的基础表中;因此一旦基础表的数据发生变化则视图也发生变化。视图一旦定义之后,就可以与基本表一样被查询,删除;也可以在视图之上再定义新的视图,但对视图的更新(增删改)操作有一定的限制。

2:视图创建语句(略)

3:视图的更新

更新视图是通过视图来插入、删除和修改数据。由于视图是不实际存储数据的虚拟表,因此对视图的更新操作最终将转换为对基础表的操作。为防止用户通过视图对数据进行增加、删除、修改,可以在定义视图的时候使用WITH CHECK OPTION子句进行约束。这样在视图上进行增删改的时候,关系数据库系统会检查视图的定义中的条件,若不满足条件则拒绝指定该更新操作。

例如:

CREATE VIEW IS_student AS SELECT
	sno,
	sname,
	sage
FROM
	student
WHERE
	sdept = 'IS' WITH CHECK OPTION;

 我们将student表之上创建一个IS_Student视图,该视图的约束条件为sdept = 'IS',所以当我们要对视图更新时候必须要满足条件sdept =‘is’。当我们对视图IS_STUDENT执行查询时候,查询语句:

SELECT * FROM IS_STUDENT

 只能查出sdept =‘IS’的记录。 所以其余的更新操作也就只能符合sdept=‘IS’条件才可以。另外对于一个不可以更新的视图创建导出来的视图也不可以更新。

4:视图的作用:

a: 视图可以简化用户的操作,例如我们查询逻辑需要3张以上的表进行连接查询时候,查询条件比较复杂,这时候我们就这可以将多张表的join创建一个视图,之后对该视图进行查询就可以了,这样可以简化查询的复杂性。

b:视图可以从多个角度让用户看数据。

c:数据可以对机密数据提供保障,例如我们有一个用户表,里面提供的有用户基本信息与一些敏感信息,但是有时候需要将一些基本信息暴露给用户,这时候如果将整张表暴露出去会危险,因此可以在用户表上创建一个视图进行安全保护。

原文地址:https://www.cnblogs.com/leodaxin/p/8858938.html