文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  SHOW CREATE VIEW 语句

15.7.7.14 SHOW CREATE VIEW 语句

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 节,“The INFORMATION_SCHEMA VIEWS Table”

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 之前的注释将被服务器从定义中剥离。