视图 View
使用简单、数据安全、数据独立
= 将SELECT语句封装
视图(View)是虚拟存在的表,并不在数据库中真实存在,在使用视图时动态生成
视图只保存查询的 SQL 逻辑,不保存查询的结果
创建视图
CREATE [OR REPLACE] VIEW view_name(列名列表) AS SELECT ... [WITH [CASCADED | LOCAL] CHECK OPTION];
查询视图
= 查询表,因为视图是虚拟存在的表
SHOW CREATE VIEW view_name;
SELECT * FROM view_name [WHERE ...];
修改视图
方法一:重新创建或替换
-
CREATE [OR REPLACE] VIEW view_name(列名列表) AS SELECT ... [WITH [CASCADED | LOCAL] CHECK OPTION];
方法二:修改视图
-
ALTER VIEW view_name[(列名列表)] AS SELECT ... [WITH [CASCADED | LOCAL] CHECK OPTION];
删除视图
DROP VIEW [IF EXISTS] view_name [,view_name2, ...] ...
WITH [CASCADED | LOCAL] CHECK OPTION
-
在进行DML操作时检查数据,只有符合视图(存储SQL逻辑)的SQL语句才能插入、更新、删除数据
-
CASCADED 的视图(默认为CASCADED ),不仅检查SQL语句是否满足自身条件,而且会检查SQL语句是否满足关联\依赖的其他视图的条件,关联的其他视图就是在创建该视图时使用到的其他视图
-
LOCAL 的视图a,也会检查自身条件和依赖的其他视图b的条件,但其他视图b必须有 WITH [CASCADED | LOCAL] CHECK OPTION 才会被检查,如果视图b没有则不检查,也不再检查视图b依赖的其他视图
视图的更新
视图含有以下任意一项为不可更新情况:
- 聚合函数或窗口函数( SUM()、MIN()、MAX()、COUNT() )
- DISTINCT
- GROUP BY
- HAVING
- UNION 或 UNION ALL
视图可以更新的必要条件:视图中的行与基础表中的行之间必须存在一对一的关系
标签:...,name,CASCADED,视图,MySQL24,LOCAL,view From: https://www.cnblogs.com/Ashen-/p/17037645.html