文档首页
MySQL 9.0 参考手册
相关文档 下载此手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  INFORMATION_SCHEMA VIEWS 表

28.3.47 INFORMATION_SCHEMA VIEWS 表

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 在 CREATE VIEW 时设置一个称为视图可更新性标志的标志。如果 UPDATEDELETE(以及类似操作)对于视图是合法的,则该标志设置为 YES(真)。否则,该标志将设置为 NO(假)。VIEWS 表中的 IS_UPDATABLE 列显示此标志的状态。这意味着服务器始终知道视图是否可更新。

    如果视图不可更新,则 UPDATEDELETEINSERT 等语句是非法的,将被拒绝。(即使视图是可更新的,也可能无法插入到其中;有关详细信息,请参阅 第 27.6.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 之前的注释。