視圖的創建、查詢與更新


 

視圖定義:
create view <視圖名> [<列名>,<列名>...] as <子查詢> [with check option];
其中[<列名>...]部分不設置,則使用子查詢中的列名;
子查詢可以式任意的select語句。
with check option表示對視圖進行update,insert,delete時要保證行滿足視圖定義中的謂詞條件(即子查詢中的條件表達式);
    
視圖刪除:
drop view <視圖名> [cascade];
cascade表示級聯刪除由它導出的所以視圖。
視圖查詢:
視圖就相當於一個虛擬表,所以所有對基本表的查詢語句,對視圖也同樣適用。這里不在詳述,可見 數據查詢之基本表的查詢.
視圖更新:sqlite不支持對視圖的更新,下面的部分在mysql中適用
對視圖的更新最終會轉換成對基本表的更新。
可用操作有update,insert,delete,用法之前也講過。
這里只討論細節問題。
如果創建視圖時加上了with check option,則使用update和delete時會在where部分加上子查詢的條件表達式。
例如:
create view viewTest as select * from test where id<3 with check option;  子查詢中的條件表達式是id<3
update viewTest set name='hello' where name='world';  對視圖進行update操作
相當於
update test set name='hello' where name='world' and id<3;  id<3被加到where部分。

insert操作時,因為視圖不一定包含基本表中的所有列,所以,最終插入到基本表時,沒有涉及到的列會被設為默認值。
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM