MySQL視圖的實現和限制

在本教學中,您將瞭解MySQL視圖,我們將解釋並演示MySQL如何實現視圖。

MySQL 5.x 版本之後支持資料庫視圖。 在MySQL中,視圖的幾乎特徵符合SQL:2003標準。 MySQL以兩種方式處理對視圖的查詢:

  • 第一種方式,MySQL會根據視圖定義語句創建一個臨時表,並在此臨時表上執行傳入查詢。
  • 第二種方式,MySQL將傳入查詢與查詢定義為一個查詢並執行組合查詢。

MySQL支持版本系統的視圖。每次視圖被更改或替換時,視圖的副本將在駐留在特定資料庫檔夾的arc(archive)檔夾中備份。備份檔的名稱為view_name.frm-00001。如果再次更改視圖,MySQL將創建一個名為view_name.frm-00002的新備份檔。

MySQL允許基於其他視圖創建視圖。在視圖定義的SELECT語句中,可以引用另一個視圖。

MySQL視圖的限制

不能在視圖上創建索引。當使用合併演算法的視圖查詢數據時,MySQL會使用底層表的索引。對於使用誘惑演算法的視圖,當您針對視圖查詢數據時,不會使用索引。

MySQL 5.7.7之前版本,是不能在SELECT語句的FROM子句中使用子查詢來定義視圖的。

如果刪除或重命名視圖所基於的表,則MySQL不會發出任何錯誤。但是,MySQL會使視圖無效。 可以使用CHECK TABLE語句來檢查視圖是否有效。

一個簡單的視圖可以更新表中數據。基於具有連接,子查詢等的複雜SELECT語句創建的視圖無法更新。

MySQL不像:OraclePostgreSQL等其他資料庫系統那樣支持物理視圖,MySQL是不支持物理視圖的。


上一篇: MySQL視圖 下一篇: MySQL觸發器