13.7.5.13 SHOW CREATE VIEWStatements 式

SHOW CREATE VIEW view_name

该语句显示创建命名视图的CREATE VIEW语句。

mysql> SHOW CREATE VIEW v\G
*************************** 1. row ***************************
                View: v
         Create View: CREATE ALGORITHM=UNDEFINED
                      DEFINER=`bob`@`localhost`
                      SQL SECURITY DEFINER VIEW
                      `v` AS select 1 AS `a`,2 AS `b`
character_set_client: utf8
collation_connection: utf8_general_ci

character_set_client是创建视图时character_set_client系统变量的会话值。 collation_connection是创建视图时collation_connection系统变量的会话值。

使用显示创建视图要求具有相关视图的SHOW VIEW特权和SELECT特权。

INFORMATION_SCHEMA VIEWStable 中也提供了查看信息。参见第 24.31 节,“ INFORMATION_SCHEMA VIEWStable”

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.01 sec)

mysql> SHOW CREATE VIEW test.v\G
*************************** 1. row ***************************
                View: v
         Create View: CREATE VIEW "v" AS select concat('a','b') AS "col1"
...
1 row in set (0.00 sec)

以规范形式存储视图定义的优点是,以后对sql_mode值进行的更改不会影响视图的结果。但是,另外的结果是,服务器将SELECT之前的 Comments 从定义中删除。