Documentation Home

13.7.7.13 显示创建视图语句

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: utf8mb4
collation_connection: utf8mb4_0900_ai_ci

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

使用SHOW CREATE VIEW需要SHOW VIEW特权,以及 SELECT相关视图的特权。

视图信息也可从 INFORMATION_SCHEMA VIEWS表中获得。请参阅 第 26.3.48 节,“INFORMATION_SCHEMA VIEWS 表”

MySQL 允许您使用不同 sql_mode的设置来告诉服务器要支持的 SQL 语法类型。例如,您可以使用ANSISQL 模式来确保 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被服务器从定义中删除。