文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (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_SCHEMAVIEWS 資料表中取得。請參閱 第 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 之前的註解。