# 26.3.48 信息_SCHEMA 视图表

意见表提供有关数据库中视图的信息。你必须拥有显示视图访问此表的权限。

意见表有这些列:

  • 表目录

    视图所属的目录的名称。这个值总是定义.

  • TABLE_SCHEMA

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

  • TABLE_NAME

    视图的名称。

  • VIEW_DEFINITION

    选择提供视图定义的语句。本专栏包含您在创建表显示创建视图产生。跳过前面的单词选择并跳过单词带检查选项.假设原始语句是:

    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属性。该值是其中之一没有,级联, 要么当地的.

  • IS_UPDATABLE

    MySQL 设置一个标志,称为视图可更新标志,在创建视图时间。标志设置为是的(真)如果更新删除(和类似的操作)对于视图是合法的。否则,标志设置为(错误的)。这IS_UPDATABLE列中的意见表显示了此标志的状态。这意味着服务器总是知道视图是否可更新。

    如果视图不可更新,则使现代化,删去插入是非法的,被拒绝。(即使视图是可更新的,也可能无法插入其中;有关详细信息,请参阅。)第25.5.3节,“可更新和可插入视图”.)

  • 定义者

    在中创建视图的用户的帐户'*用户名*'@'*主机名*'总体安排

  • 安全类型

    风景SQL安全性特征它的价值是定义者调用者.

  • 字符集客户端

    会话的会话值字符集客户端创建视图时的系统变量。

  • 校对连接

    会话的会话值校对连接创建视图时的系统变量。

# 笔记

MySQL允许不同的sql_模式用于告诉服务器要支持的SQL语法类型的设置。例如,您可以使用ANSISQL模式,以确保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_模式不要影响视图中的结果。然而,另一个后果是,在选择由服务器从定义中删除。