VIEWS表
该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 vAS SELECT s2,s1FROM tWHERE s1 > 5ORDER BY s1WITH CHECK OPTION ;然后,视图定义如下所示:
SELECT s2,s1FROM tWHERE s1 > 5ORDER BY s1CHECK_OPTION
CHECK_OPTION
属性的值。值中的一个NONE
,CASCADE
或LOCAL
。IS_UPDATABLE
MySQL会设置一个标志,称为视图可更新性标志
CREATE VIEW
。YES
如果UPDATE
和和DELETE
(以及类似的操作)对该视图合法,则将该标志设置为(true)。否则,该标志设置为NO
(false)。表中的IS_UPDATABLE
列VIEWS
显示此标志的状态。这意味着服务器始终知道视图是否可更新。如果视图是不可更新的,这样的语句
UPDATE
,DELETE
以及INSERT
是非法的,将被拒绝。(即使视图是可更新的,也可能无法插入其中;有关详细信息,请参见“更新和插入视图”。)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.vAS SELECT 'a' || 'b'as col1; Query OK, 0 rows affected (0.00 sec) mysql>SELECT VIEW_DEFINITIONFROM INFORMATION_SCHEMA.VIEWSWHERE TABLE_SCHEMA = 'test' ANDTABLE_NAME = 'v'; +---------------------------------- + | VIEW_DEFINITION | +---------------------------------- + | select concat('a','b') AS `col1` | +---------------------------------- + 1 row in set (0.00 sec)
以规范形式存储视图定义的优点是,以后对的值进行的更改sql_mode
不会影响视图的结果。但是,另一个后果是SELECT
服务器将定义之前的注释删除。