Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  SHOW CREATE VIEW Statement

15.7.7.14 显示创建视图语句

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_client 是视图创建时会话值的 character_set_client 系统变量。collation_connection 是视图创建时会话值的 collation_connection 系统变量。

使用 显示创建视图 需要 显示视图 权限和视图的 SELECT 权限。

视图信息也可以从 INFORMATION_SCHEMA VIEWS 表中获取。见 第 28.3.48 节,“INFORMATION_SCHEMA 视图表”

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