
视图VIEW
⑩④详解MySQL视图
1. 视图的基本使用
视图:
-  什么是视图? 
-  
  - 视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。
 
-  如何使用视图? 
-  🚀创建视图: 
-  
  -  CREATE [OR REPLACE] VIEW 视图名称[(字段列表)] AS SELECT语句 [WITH [CASCADE | LOCAL] CHECK OPTION];
-  
    -  -- 演示 -- CREATE OR REPLACE 表示要创建或替换一个视图 -- 根据查询结果创建一个视图 CREATE OR REPLACE VIEW emp_v_1 AS SELECT id,name,age from emp where id < 10;
 
-  
 
-  
-  🚀查询视图: 
-  
  -  -- 查看创建视图的语句 SHOW CREATE VIEW 视图名称; -- 查看视图所有数据(与查询表数据一致) SELECT * FROM 视图名称;
 
-  
-  🚀修改视图: 
-  
  -  -- 方式一: CREATE OR REPLACE VIEW 视图名称[(字段列表)] AS SELECT语句 [WITH [CASCADE | LOCAL] CHECK OPTION]; -- 方式二: ALTER VIEW 视图名称[(字段列表)] AS SELECT语句 [WITH [CASCADE | LOCAL] CHECK OPTION];
-  
    -  -- 演示 -- 存在视图emp_v_1,包含字段id,name,age ,根据喜好更新 -- 方式一: CREATE OR REPLACE VIEW emp_v_1 AS SELECT id,name,job from emp where id > 5; -- 方式二: ALTER VIEW emp_v_1 AS SELECT id,name,job from emp where id < 8;
 
-  
 
-  
-  🚀删除视图: 
-  
  -  -- IF EXISTS关键字,表示只有视图存在时才删除,视图不存在则不执行删除。 DROP VIEW [IF EXISTS] 视图1 [,视图2,视图3...];
-  
    -  -- 演示 -- 删除视图emp_v_1 DROP VIEW IF EXISTS emp_v_1;
 
-  
 
-  
2. 视图的检查选项
视图检查选项 - WITH [CASCADE | LOCAL] CHECK OPTION:
-  视图检查选项: 
-  
  - 当使用WITH CHECK OPTION子句创建视图时,MySQL会通过视图检查正在更改的每个行,例如插入,更新,删除,以使其符合视图的定义。MySQL允许基于另一个视图创建视图,它还会检查依赖视图中的规则以保持一致性。为了确定检查的范围,MySQL提供了两个选项:CASCADED和LOCAL,默认值为CASCADED。
 
- 当使用
-  🚀 CASCADED
-  
  -  -- 创建或修改视图,设置检查选项,范围:CASCADE CREATE OR REPLACE VIEW 视图名称[(字段列表)] AS SELECT语句 WITH CASCADE CHECK OPTION; -- 修改视图,设置检查选项,范围:CASCADE ALTER VIEW 视图名称[(字段列表)] AS SELECT语句 WITH CASCADE CHECK OPTION;
-  
 
-  
-  🚀 LOCAL
-  
  -  -- 创建或修改视图,设置检查选项,范围:LOCAL CREATE OR REPLACE VIEW 视图名称[(字段列表)] AS SELECT语句 WITH LOCAL CHECK OPTION; -- 修改视图,设置检查选项,范围:LOCAL ALTER VIEW 视图名称[(字段列表)] AS SELECT语句 WITH LOCAL CHECK OPTION;
-  LOCAL检查选项会递归检查当前视图依赖的视图的规则,若依赖的视图也设置了检查选项,保持规则一致性,若依赖的视图并未设置依赖选项,不检查其规则,无需保持规则一致性。 
 
-  
3. 视图的更新
视图的更新规则:
-  要使视图可更新,视图中的行与基础表中的行之间必须存在一对一的关系。如果视图包含以下任何一项,则该视图不可更新: 
-  
  -  ⚪ 聚合函数或窗口函数(SUM()、MIN()、MAX()、COUNT()等)
-  ⚪ DISTINCT
-  ⚪ GROUP BY
-  ⚪ HAVING⚪ UNION或者UNION ALL
 
-  
4. 视图的作用
- 视图的所用?
- ⚪简单:视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。
- ⚪安全:数据库可以授权,但不能授权到数据库特定行和特定的列上。通过视图用户只能查询和修改他们所能见到的数据。
- ⚪数据独立:视图可帮助用户屏蔽真实表结构变化带来的影响。











