SQL基础总结(十一):视图

 

本系列blog源自前年写的SQL学习笔记,汇总一下发上来。(1月份发了前三篇笔记,原以为后面的笔记误操作删了,今天在硬盘里又找到了,一起发上来)

--------------------------------

除了ORDER BY子句通常是被禁止的,几乎所有有效的SELECT语句都可以定义视图。

可以嵌套视图,视图的SELECT语句可以从其他视图中检索数据。

将包含大量运算的查询存储为视图,就可以通过查询视图重复这些运算。

视图不能引用自身。

有别于基础表,视图不支持约束。有些DBMS允许对视图建立索引。

因为视图不存储数据,DBMS必须在每次引用时执行它们。尤其是嵌套视图,可能严重的降低效率。

CREATE VIEW view AS select_statement;

视图存在于SQL语句的生存期,临时表存在于进程的生存期。

标准SQL没有ALTER VIEW语句,如果在建立视图之后,基础表或视图发生了变化,就要删除并重建这个视图。然而,大多数DBMS都支持非标准的ALTER VIEW语句。

 

通过视图修改数据:

可修改视图:指可以使用插入、更新和删除操作来改变基础表中数据的视图。对可修改视图做的任何变化都将明确地传递到基础表。

不可修改(只读)视图:不支持插入、修改和删除操作的视图,因为对数据的改动可能是含糊不清的,要改变出现在只读视图的数据,必须直接修改基础表(或通过其它可修改视图)。

 

单一表视图总是可更新的。

DBMS检查基础表的联结和多表视图的引用完整性约束来决定视图是否可更新。以下这些类型的查询可以定义为可更新得视图:

一对一内联结。

一对一外联结。

一对多内联结。

一对多外联结。

多对多联结。

UNIONEXCEPT查询。

 

可更新视图必须包含基本表的键来保证每个视图指向基本表的一行。

可更新视图不包含的列必须可以为空或在基础表有一个默认值,以便DBMS能够在插入时构建整行。

更新值必须符合基础表列的限制,如数据类型、可否为空及其它约束。

 

删除视图:DROP VIEW view;

删除表不会删除引用这个表的视图,所以必须使用DROP VIEW显示删除视图。

猜你喜欢

转载自shensy.iteye.com/blog/1486871