Documentation Home
MySQL 8.0 参考手册  / 第 26 章 INFORMATION_SCHEMA 表  / 26.3 INFORMATION_SCHEMA 总表  /  21.3.29 INFORMATION_SCHEMA VIEWS 表

21.3.29 INFORMATION_SCHEMA VIEWS 表

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。该值为NONECASCADE或之一LOCAL

  • IS_UPDATABLE

    MySQL 会设置一个标志,称为视图可更新性标志 CREATE VIEW。如果和 (以及类似操作)对于视图是合法的,则该标志设置为YES(true) 。否则,标志设置为 (false)。表中的 列 显示此标志的状态。这意味着服务器始终知道视图是否可更新。 UPDATEDELETENOIS_UPDATABLEVIEWS

    如果视图不可更新,则 、 和 等语句 UPDATEDELETE非法 INSERT的并被拒绝。(即使视图是可更新的,也可能无法插入其中;有关详细信息,请参阅 第 20.5.3 节,“可更新和可插入的视图”。)

  • DEFINER

    创建视图的用户的帐户, 格式为。 'user_name'@'host_name'

  • SECURITY_TYPE

    景观SQL SECURITY特色。值为DEFINER或 之一INVOKER

  • 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被服务器从定义中删除。