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 属性的值。该值是
NONE
、CASCADE
或LOCAL
之一。 -
IS_UPDATABLE
MySQL 在创建视图时设置一个标志,称为视图可更新标志。如果对视图执行
UPDATE
、DELETE
等操作是合法的,该标志设置为YES
(true)。否则,该标志设置为NO
(false)。IS_UPDATABLE
列在VIEWS
表中显示该标志的状态。这意味着服务器总是知道一个视图是否可更新。如果一个视图不可更新,语句如
UPDATE
、DELETE
和INSERT
将被拒绝。即使一个视图可更新,它也可能无法插入;详细信息请参阅第27.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_模式
设置来告诉服务器支持的 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_模式
值的更改不会影响视图的结果。然而,这也意味着服务器将从定义中删除前置的注释。