数据库视图功能的使用

数据库视图功能的使用

创建视图的格式:

create view <view name> as
select <attributes name>
from <table name>
where<requirments>

为什么要使用视图:

  1. 简化了操作,把经常使用的数据定义为视图。
  2. 安全性,用户只能查询和修改能看到的数据。
  3. 逻辑上的独立性,屏蔽了真实表的结构带来的影响。

视图中的内容会随着表项自动更新。

视图也是可以插入和删除的,但是注意对视图的插入和删除从理论上来说就可能有问题:

image-20191027155121447

而各种数据库对这个问题也有对应的处理方案:

视图能否修改数据?

单个表的视图是可以的,就像普通表一样。
多个表的视图是不可以的,需要触发器。

另外,即使是单表也有限制:

来源:http://1035054540-qq-com.iteye.com/blog/1499430

如果视图包含下述结构中的任何一种,那么它就是不可更新的:
(1)聚合函数;
(2)DISTINCT关键字;
(3)GROUP BY子句;
(4)ORDER BY子句;
(5)HAVING子句;
(6)UNION运算符;
(7)位于选择列表中的子查询;
(8)FROM子句中包含多个表;
(9)SELECT语句中引用了不可更新视图;
(10)WHERE子句中的子查询,引用FROM子句中的表;
(11)ALGORITHM 选项指定为TEMPTABLE(使用临时表总会使视图成为不可更新的)。

另外,如果原表中attribute有not null限制也不一定可以更新,如果not null的那个attribute没有包括在视图中就不能更新了,因为通过视图更新的话不存在的项是会设置为null的。

image-20191027155811776

原文地址:https://www.cnblogs.com/jiading/p/11747814.html