MySQL 8.4 發行說明
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 之前的註解。