### 26.3.48 信息\_SCHEMA 视图表 [](<>) 这[`意见`](information-schema-views-table.html)表提供有关数据库中视图的信息。你必须拥有[`显示视图`](privileges-provided.html#priv_show-view)访问此表的权限。 这[`意见`](information-schema-views-table.html)表有这些列: - `表目录` 视图所属的目录的名称。这个值总是`定义`. - `TABLE_SCHEMA` 视图所属的架构(数据库)的名称。 - `TABLE_NAME` 视图的名称。 - `VIEW_DEFINITION` 这[`选择`](select.html)提供视图定义的语句。本专栏包含您在`创建表`列[`显示创建视图`](show-create-view.html)产生。跳过前面的单词[`选择`](select.html)并跳过单词`带检查选项`.假设原始语句是: ``` 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 设置一个标志,称为视图可更新标志,在[`创建视图`](create-view.html)时间。标志设置为`是的`(真)如果[`更新`](update.html)和[`删除`](delete.html)(和类似的操作)对于视图是合法的。否则,标志设置为`不`(错误的)。这`IS_UPDATABLE`列中的[`意见`](information-schema-views-table.html)表显示了此标志的状态。这意味着服务器总是知道视图是否可更新。 如果视图不可更新,则[`使现代化`](update.html),[`删去`](delete.html)和[`插入`](insert.html)是非法的,被拒绝。(即使视图是可更新的,也可能无法插入其中;有关详细信息,请参阅。)[第25.5.3节,“可更新和可插入视图”](view-updatability.html).) - `定义者` 在中创建视图的用户的帐户`'*`用户名`*'@'*`主机名`*'`总体安排 - `安全类型` 风景`SQL安全性`特征它的价值是`定义者`或`调用者`. - `字符集客户端` 会话的会话值[`字符集客户端`](server-system-variables.html#sysvar_character_set_client)创建视图时的系统变量。 - `校对连接` 会话的会话值[`校对连接`](server-system-variables.html#sysvar_collation_connection)创建视图时的系统变量。 #### 笔记 MySQL允许不同的[`sql_模式`](server-system-variables.html#sysvar_sql_mode)用于告诉服务器要支持的SQL语法类型的设置。例如,您可以使用[`ANSI`](sql-mode.html#sqlmode_ansi)SQL模式,以确保MySQL正确解释标准SQL连接运算符双栏(`||`),在您的查询中。如果随后创建一个连接项的视图,可能会担心更改[`sql_模式`](server-system-variables.html#sysvar_sql_mode)设置为不同于[`ANSI`](sql-mode.html#sqlmode_ansi)可能会导致视图无效。但事实并非如此。无论您如何编写视图定义,MySQL总是以相同的方式以规范的形式存储它。下面的示例显示了服务器如何将双栏连接运算符更改为[`CONCAT()`](string-functions.html#function_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_模式`](server-system-variables.html#sysvar_sql_mode)不要影响视图中的结果。然而,另一个后果是,在[`选择`](select.html)由服务器从定义中删除。