視圖的定義、更新、撤銷


SQL數據庫結構

基本表是實際存儲於存儲文件中的表,基本表中的數據是需要存儲的。

視圖在SQL中只存儲其由基本表導出視圖所需要的公式,即由基本表產生視圖的映像信息,其數據並不存儲,而是在運行過程中動態產生與維護的。

對視圖數據的更改最終要反映在對基本表的更改上。

視圖的定義

視圖需要“先定義,在使用”

定義視圖

CREATE VIEW view_name[(列名[,列名]...)]
as 子查詢[with check option]

如果視圖的屬性名缺省,則默認為子查詢結果中的屬性名;也可以顯示指明其所擁有的的列名。

with check option指明當對視圖進行insert、update、delete時,要檢查進行insert、update、delete的元組是否滿足視圖定義中子查詢中定義的條件表達式

SQL視圖更新

視圖更新是比較復雜的問題,因視圖不保存數據,對視圖的更新最終要反映到對基本表的更新上,而有時,視圖定義的映射是不可逆的

SQL視圖更新的可執行性

  1. 如果視圖的SELECT目標列包含聚集函數,則不能更新
  2. 如果視圖的SELECT子句使用了uniquedistinct,則不能更新
  3. 如果視圖中使用了group by子句,則不能更新
  4. 如果視圖中包括經算術表達式計算出來的列,則不能更新
  5. 如果視圖是由單個表的列構成的,但並沒有包括主鍵,則不能更新
  • 對於由單一Table子集構成的視圖,即如果視圖是從單個基本表使用選擇、投影操作導出的,並且包含了基本表的主鍵,則可以更新

視圖的撤銷

DROP VIEW view_name


免責聲明!

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



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