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
前面的註解。