详细的描述了MySQL中的视图。

视图的简介

视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。
​通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作在创建这条SQL查询语句上。

视图的语法

创建

CREATE [OR REPLACE] VIEW 视图名称 [(列名列表)] AS SELECT 语句[WITH[CASCADED|LOCAL] CHECK OPTION ]

查询

SHOW CREATE VIEW 视图名称; --查看创建视图语句
SELECT * FROM 视图名称.......; --查看视图数据

修改

-- 方式一
CREATE [OR REPLACE] VIEW 视图名称(列名列表)] AS SELECT语句 [WITH[CASCADED|LOCAL] CHECK OPTION]
-- 方式二
ALTER VIEW 视图名称(列名列表)] AS SELECT语句 [WITH[CASCADED|LOCAL] CHECK OPTION]

删除

DROP VIEW [IF EXISTS] 视图名称[视图名称] ...

视图的检查选项

​ 当使用 WITH CHECK OPTION 子句创建视图时,My5QL会通过视图检查正在更改的每个行,例如插入,更新,删除,以使其符合视图的定义。

​ MySQL允许基于另一个视图创建视图,它还会检查依赖视图中的规则以保持一致性。为了确定检查的范围,mysql 提供了两个选项: CASCADED和LOCAL,默认值为CASCADED。

cascaded

MySQL08-01cascaded

local

MySQL08-02local

视图的更新

要使视图可更新,视图中的行与基础表中的行之间必须存在一对一的关系。如果视图包含以下任何一项,则该视图不可更新:

  1. 聚合函数或窗口函数(SUM()、MIN()、MAX()、COUNT()等)
  2. DISTINCT
  3. GROUP BY
  4. HAVING
  5. UNION 或者 UNION ALL