Mysql視圖
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視圖