文件首頁
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 參考手冊  /  ...  /  INFORMATION_SCHEMA VIEWS 表格

28.3.47 INFORMATION_SCHEMA VIEWS 表格

VIEWS 表格提供資料庫中視圖的相關資訊。您必須擁有 SHOW VIEW 權限才能存取此表格。

VIEWS 表格具有以下欄位:

  • TABLE_CATALOG

    視圖所屬的目錄名稱。此值永遠為 def

  • TABLE_SCHEMA

    視圖所屬的綱要(資料庫)名稱。

  • TABLE_NAME

    視圖的名稱。

  • VIEW_DEFINITION

    提供視圖定義的 SELECT 陳述式。此欄位包含您在 SHOW CREATE VIEW 產生的 Create Table 欄位中看到的大部分內容。略過 SELECT 前的文字,並略過 WITH CHECK OPTION 文字。假設原始陳述式為:

    CREATE VIEW v AS
      SELECT s2,s1 FROM t
      WHERE s1 > 5
      ORDER BY s1
      WITH CHECK OPTION;

    那麼視圖定義如下所示:

    SELECT s2,s1 FROM t WHERE s1 > 5 ORDER BY s1
  • CHECK_OPTION

    CHECK_OPTION 屬性的值。該值為 NONECASCADELOCAL 其中之一。

  • IS_UPDATABLE

    MySQL 會在 CREATE VIEW 時設定一個稱為視圖可更新性的旗標。如果 UPDATEDELETE(以及類似的操作)對於視圖是合法的,則該旗標設定為 YES(true)。否則,該旗標設定為 NO(false)。VIEWS 表格中的 IS_UPDATABLE 欄位會顯示此旗標的狀態。這表示伺服器始終知道視圖是否可更新。

    如果視圖不可更新,則諸如 UPDATEDELETEINSERT 之類的陳述式是非法的,並且會被拒絕。(即使視圖是可更新的,也可能無法插入到其中;有關詳細資訊,請參閱第 27.5.3 節,「可更新和可插入的視圖」。)

  • DEFINER

    建立視圖的使用者帳戶,格式為 'user_name'@'host_name'

  • SECURITY_TYPE

    視圖 SQL SECURITY 特性。該值為 DEFINERINVOKER 其中之一。

  • CHARACTER_SET_CLIENT

    建立視圖時 character_set_client 系統變數的會話值。

  • COLLATION_CONNECTION

    建立視圖時 collation_connection 系統變數的會話值。

注意事項

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.00 sec)

mysql> SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS
       WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v';
+----------------------------------+
| VIEW_DEFINITION                  |
+----------------------------------+
| select concat('a','b') AS `col1` |
+----------------------------------+
1 row in set (0.00 sec)

以標準形式儲存視圖定義的優點是,稍後對 sql_mode 值所做的變更不會影響視圖的結果。但是,另一個後果是伺服器會從定義中移除 SELECT 前的註解。