在本教學中,您將瞭解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不像:Oracle,PostgreSQL等其他資料庫系統那樣支持物理視圖,MySQL是不支持物理視圖的。