1. 程式人生 > >Mysql視圖

Mysql視圖

列表 如果 eat 增加 columns 系統 merge str 不同的

1.介紹

  視圖跟表有很多相似的特定,可以對進行視圖讀操作,特定的情況下也可以對視圖指向的數據進行insert,delete,update。但是視圖和表不同的是視圖並不是真正的存放數據,視圖是一張虛擬的表,可以把不同的表關聯起來,能夠提高SQL語句的復用性和安全性。

2.語法

  CREATE  [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]  VIEW  view_name  [(屬性列表)]  

    AS  SELECT  [columns]  FROM  [WITH [CASCADED | LOCAL] CHECK OPTION]

  其中可選參數ALGORITHM有三種,分別為UNDEFINED,MERGE,TEMPTABLE。

    (1)UNDEFINED:Mysql將自動選擇算法

    (2)MERGE:先將視圖中的SELECT語句和外部SELECT VIEW ... 的SELECT進行合並然後再查詢,系統默認值

    (3)TEMPTABLE:先執行視圖內部的SELECT語句,然後再執行SELECT VIEW ... 中的SELECT語句

  屬性列表表示查詢結果返回的列名稱,可選參數,默認和表的列名一致

  WITH [CASCADED | LOCAL] CHECK OPTION 可選參數,CASCADED表示更新視圖時要滿足所有視圖的條件,而LOCAL表示滿足本身定義條件即可

3.實例

  (1)創建視圖時沒有使用WITH CHECK OPTION

  技術分享

  技術分享

  技術分享

  可以看出,可以隨意地update 或者 insert 記錄,不需要滿足name like ‘%c‘條件

  (2)增加了WITH CHECK OPTION

  技術分享

  這時候如果要對book_view進行update或者insert就要滿足name LIKE ‘%s%‘

  (3)WITH CASCADED CHEKC OPTION 和 WITH LOCAL CHECK OPTION的區別

  技術分享

  LOCAL只檢查本視圖的條件,而CASCADED會檢查所有視圖的條件

4.參考資料

  WITH CHECK OPTION : http://blog.csdn.net/xinyuan_java/article/details/51424651

Mysql視圖