#### 13.7.7.13 SHOW CREATE VIEW 语句

[](<>)

```
SHOW CREATE VIEW view_name
```

该声明显示[`创建视图`](create-view.html)创建命名视图的语句。

```
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`](server-system-variables.html#sysvar_character_set_client)创建视图时的系统变量。`collat​​ion_connection`是会话值[`collat​​ion_connection`](server-system-variables.html#sysvar_collation_connection)创建视图时的系统变量。

用于[`显示创建视图`](show-create-view.html)需要[`显示视图`](privileges-provided.html#priv_show-view)特权，以及[`选择`](privileges-provided.html#priv_select)有问题的视图的特权。

查看信息也可从`INFORMATION_SCHEMA` [`意见`](information-schema-views-table.html)桌子。看[第 26.3.48 节，“信息\_SCHEMA 视图表”](information-schema-views-table.html).

MySQL 让你使用不同的[`sql_mode`](server-system-variables.html#sysvar_sql_mode)设置告诉服务器要支持的 SQL 语法类型。例如，您可以使用[`ANSI`](sql-mode.html#sqlmode_ansi)SQL 模式可确保 MySQL 正确解释标准 SQL 连接运算符，双杠 (`||`)，在您的查询中。如果您随后创建连接项目的视图，您可能会担心更改[`sql_mode`](server-system-variables.html#sysvar_sql_mode)设置为不同于[`ANSI`](sql-mode.html#sqlmode_ansi)可能导致视图无效。但这种情况并非如此。无论您如何写出视图定义，MySQL 总是以相同的方式以规范的形式存储它。这是一个示例，显示了服务器如何将双杠连接运算符更改为[`连接（）`](string-functions.html#function_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`](server-system-variables.html#sysvar_sql_mode)不影响视图的结果。然而，另一个后果是之前的评论[`选择`](select.html)被服务器从定义中剥离。
