Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  The INFORMATION_SCHEMA VIEWS Table

28.3.48 INFORMATION_SCHEMA 视图表

VIEWS 表提供了数据库中的视图信息。您必须拥有 SHOW VIEW 权限以访问该表。

VIEWS 表具有以下列:

  • TABLE_CATALOG

    该视图所属的目录名称。该值始终为 def

  • TABLE_SCHEMA

    该视图所属的数据库名称。

  • TABLE_NAME

    该视图的名称。

  • VIEW_DEFINITION

    该视图的定义语句,类似于 SELECT 语句。该列包含了 Create Table 列中大部分内容,该列来自 SHOW CREATE VIEW 语句。跳过 SELECT 之前的单词,并跳过 WITH CHECK OPTION 之后的单词。假设原始语句是:

    CREATE VIEW v AS
      SELECT s2,s1 FROM t
      WHERE s1 > 5
      ORDER BY s1
      WITH CHECK OPTION;

    那么视图定义看起来像这样:

    SELECT s2,s1 FROM t WHERE s1 > 5 ORDER BY s1
  • CHECK_OPTION

    该视图的 CHECK_OPTION 属性的值。该值可以是 NONECASCADELOCAL

  • IS_UPDATABLE

    MySQL 在 CREATE VIEW 时设置了一个标志,即视图可更新标志。该标志设置为 YES(true),如果 UPDATEDELETE(以及类似操作)对视图是合法的。否则,该标志设置为 NO(false)。该 IS_UPDATABLE 列在 VIEWS 表中显示该标志的状态。这意味着服务器总是知道视图是否可更新。

    如果视图不可更新,则语句如 UPDATEDELETEINSERT 将被拒绝。(即使视图可更新,也可能无法插入;详见 第 27.5.3 节,“可更新和可插入视图”。)

  • DEFINER

    创建视图的用户账户,以 'user_name'@'host_name' 格式。

  • SECURITY_TYPE

    视图的 SQL SECURITY 特性。该值可以是 DEFINERINVOKER

  • CHARACTER_SET_CLIENT

    创建视图时的会话值 character_set_client 系统变量。

  • COLLATION_CONNECTION

    创建视图时的会话值 collation_connection 系统变量。

注意事项

MySQL 允许不同的 sql_mode 设置,以告诉服务器支持的 SQL 语法类型。例如,您可能使用 ANSI SQL 模式,以确保 MySQL 正确解释标准 SQL 连接运算符,即双竖线 (||),在您的查询中。如果您然后创建了一个连接项目的视图,您可能担心更改 sql_mode 设置为不同于 ANSI 的值可能会使视图变得无效。但是,这不是这种情况。无论您如何编写视图定义,MySQL 总是以同样的方式存储它,即规范形式。以下是一个示例,显示服务器如何将双竖线连接运算符更改为 CONCAT() 函数:

mysql> SET sql_mode = 'ANSI';
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE VIEW test.v AS SELECT 'a' || 'b' as col1;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS
       WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v';
+----------------------------------+
| VIEW_DEFINITION                  |
+----------------------------------+
| select concat('a','b') AS `col1` |
+----------------------------------+
1 row in set (0.00 sec)

存储视图定义的规范形式的优点是,后续对 sql_mode 值的更改不会影响视图的结果。然而,一个附加的结果是,服务器从定义中剥离了 SELECT 之前的注释。