跳到主要内容
版本:V1.0.0

CREATE VIEW

描述

该语句用于创建视图。

使用限制及注意事项

  • 视图在数据库中实际上并不是以表的形式存在,视图是作为在 CREATE VIEW 语句中指定的 SELECT 语句的结果而派生出来的,每次使用时视图就会派生。

  • 如果 FROM 子句中引用了两个或多个表或视图,则称该视图为连接视图(Join View)。一个可更新的连接视图,也称为可修改的连接视图,涉及两个或多个基表或视图,并允许 DML 操作。可更新的视图不受限于 WITH READ ONLY 子句。

  • 为确保视图的可更新性,必须满足一系列特定条件。其中一项普遍适用的规则是,在对连接视图进行 INSERTUPDATEDELETE 操作时,操作只能针对单个基表进行修改。

权限要求

执行 CREATE VIEW 语句,需要当前用户拥有 CREATE VIEW 权限。有关 seekdb 权限的详细介绍,参见 seekdb 的权限分类

语法

CREATE [OR REPLACE] VIEW view_name[(column_name_list)]
AS select_stmt
[check_option];

column_name_list:
column_name [, column_name ...]

check_option:
WITH CHECK OPTION
| WITH CASCADED CHECK OPTION
| WITH LOCAL CHECK OPTION

参数解释

参数描述
OR REPLACE可选项,表示如果要创建的视图名称已存在,则使用新的定义重新创建视图,即替换已有的视图。
view_name指定视图名。
column_name_list可选项,指定视图的列名列表。如果未指定列名列表,由 SELECT 语句检索的列名将用作视图列名。SELECT 语句检索的列可以是对表列的简单引用,也可以是使用函数、常量值、运算符等的表达式。视图列名有以下限制:
  • 必须具有唯一的列名,不得有重复。
  • column_name_list 中的名称数目必须等于 SELECT语句检索的列数。
select_stmt用于定义视图的查询(SELECT)语句。它给出了视图的定义,可以从基表或其他视图进行选择。有关查询语句的具体结构和选项信息,参见 SELECT 语句
check_option可选项,指定视图的检查范围,用来限制对视图的插入、更新操作。检查范围的详细介绍可参见下文 check_option

check_option

WITH CHECK OPTION:是一种用于创建视图的语法,它用于确保插入或更新的数据满足视图的定义条件。在 MySQL 模式中,WITH CHECK OPTION 子句还可以与 LOCAL/CASCADED 关键字一起使用,以进一步指定数据检查的范围。

  • WITH CASCADED CHECK OPTION:对本视图进行检查,并递归地对引用的所有视图进行检查。

  • WITH LOCAL CHECK OPTION:对本视图进行检查,是否对引用的视图进行检查取决于被引用视图的定义。

示例

  1. 创建表 test_tbl1

    CREATE TABLE test_tbl1 (col1 INT, col2 INT);
  2. 基于表 test_tbl1 创建视图 v1

    CREATE VIEW v1
    AS SELECT * FROM test_tbl1 WHERE col2 < 2
    WITH CHECK OPTION;
  3. 使用 LOCAL CHECK OPTION 语法,基于视图 v1 创建视图 v2

    CREATE VIEW v2
    AS SELECT * FROM v1 WHERE col2 > 0
    WITH LOCAL CHECK OPTION;
  4. 使用 CASCADED CHECK OPTION 语法,基于视图 v1 创建视图 v3

    CREATE VIEW v3
    AS SELECT * FROM v1 WHERE col2 > 0
    WITH CASCADED CHECK OPTION;

相关文档