Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 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系统变量的会话值,当视图被创建时。

使用SHOW CREATE VIEW需要SHOW VIEW权限,以及SELECT权限,用于该视图。

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

MySQL 允许您使用不同的sql_mode设置来告诉服务器支持的 SQL 语法类型。例如,您可能使用ANSI SQL 模式,以确保 MySQL 正确地解释标准 SQL 连接操作符,双竖线 (||),在您的查询中。如果您然后创建一个连接操作符的视图,您可能会担心更改sql_mode设置到值不同于ANSI的可能会使视图无效。但是,这不是情况。无论您如何编写视图定义,MySQL 都会将其存储为同一形式,canonical form。以下是一个示例,展示了服务器如何将双竖线连接操作符更改为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)

canonical form 存储视图定义的优点是,您可以在更改sql_mode值时,不会影响来自视图的结果。然而,另一个结果是,服务器将删除SELECT之前的注释。