Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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

28.3.47 INFORMATION_SCHEMA 视图表

视图表VIEWS提供了关于数据库中的视图的信息。您必须拥有SHOW VIEW特权才能访问该表。

视图表VIEWS具有以下列:

  • TABLE_ Catalog

    视图所属的目录名称。这一值始终是def

  • TABLE_SCHEMA

    视图所属的架构(数据库)名称。

  • TABLE_NAME

    视图名称。

  • VIEW_DEFINITION

    提供视图定义的SELECT语句。这一列包含了SHOW CREATE VIEW生成的Create Table列的大部分内容。跳过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 在创建视图时设置一个标志,称为视图可更新标志。如果对视图执行 UPDATEDELETE 等操作是合法的,该标志设置为 YES(true)。否则,该标志设置为 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_模式设置来告诉服务器支持的 SQL 语法类型。例如,您可能使用ANSI SQL 模式来确保 MySQL 正确地解释标准 SQL 连接操作符,双竖线 (||),在您的查询中。如果您然后创建一个连接项的视图,您可能担心将sql_模式设置更改为与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_模式值的更改不会影响视图的结果。然而,这也意味着服务器将从定义中删除前置的注释。