文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  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.6.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 之前的註解。