视图的定义
视图是一种虚拟存在的表,对于使用视图的用户来说基本上是透明的。视图并不在数据库中实际存在,行和列数据来自定义视图的查询总使用的表,并且是在使用视图时动态生成的。
视图相对于普通表的优势:
简单:使用视图的用户完全不需要关系后面对应的表结构、关联条件和筛选条件,对用户来说已经是过滤好的符合条件的结果集。
安全:使用视图的用户只能访问他们被允许的结果集,对表的权限管理并不能限制到某个行某个列,但是通过视图就可以简单的实现。
数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。
创建视图
CREATE [OR REPLACE] VIEW 视图名(列1,列2…)
AS SELECT (列1,列2…)
FROM …;
[WITH [CASCADED|LOCAL] CHECK OPTION]
AS: 表示视图将要执行的操作
WITH CHECK OPTION:表示创建视图时保证在该视图的权限范围之内
CASCADED:表示在创建视图时,需要满足跟该视图有关的所有相关视图和表的条件,该参数为默认值
LOCAL:表示创建视图时,只要满足该视图本身定义的条件即可
修改视图
CREATE OR REPLACE VIEW 视图名 AS SELECT [...] FROM [...];
[WITH [CASCADED|LOCAL] CHECK OPTION]