MySQL 9.0 发行说明
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 始终以相同的方式存储它,即规范形式。以下是一个示例,说明服务器如何将双竖线连接运算符更改为 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
之前的注释将被服务器从定义中删除。