该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
。该值为NONE
、CASCADE
或之一LOCAL
。IS_UPDATABLE
MySQL 会设置一个标志,称为视图可更新性标志
CREATE VIEW
。如果和 (以及类似操作)对于视图是合法的,则该标志设置为YES
(true) 。否则,标志设置为 (false)。表中的 列 显示此标志的状态。这意味着服务器始终知道视图是否可更新。UPDATE
DELETE
NO
IS_UPDATABLE
VIEWS
如果视图不可更新,则 、 和 等语句
UPDATE
是DELETE
非法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
被服务器从定义中删除。