SQL Server之视图基础知识
視圖的概念
視圖就是一張虛擬的表。視圖在外觀和行為上都類似于表,但它不需要實際的物理存儲。
當創建一個視圖時,實際上是在數據庫里執行了一個select語句。
警告:如果用于創建視圖的表被刪除了,那么這個視圖就不可訪問了。如果對這個視圖做查詢,就會收到錯誤信息。
創建視圖
create view view_name
as
sql_sentence
執行語句 select? * from view_name
With Check Option
這是Create View語句里的一個選項,其目的是確保全部的Update和Insert語句滿足視圖定義里的條件。
例如:
as
select sid,fid,score from score where fid is not null
with check option
在這個范例里,with check option確保了fid里的數不能為null。
當插入數據:insert into view_score values(null,59),系統會提示錯誤。
警告:在基于視圖創建另一個視圖時,with check option有兩個選項:cascaded和local,其中cascaded是默認選項。在對基表進行更新時,cascade
選項會檢查所有底層視圖,所有完整性約束,以及新視圖的定義條件。local選項只檢查兩個視圖的完整性約束和新視圖的定義條件,不檢查底層的表。因
此,使用cascade選項創建視圖是更安全的做法,基表的引用完整性也得到了保護。
刪除視圖
drop view view_name
它有兩個選項:restrict和cascade;如果使用了restrict選項進行刪除操作,而其他視圖在約束里有所引用,刪除操作就會出錯。
如果使用了cascade選項,而且其他視圖或約束被引用了,drop view也會成功,而且底層的視圖或數據也會被刪除。
警告:在使用cascade選項時小心,避免重要的視圖被意外的刪除。
視圖的注意事項:
在一定條件下,視圖的底層數據可以進行更新:
視圖不包括結合;
視圖不包括Group By子句;
視圖不包括Union語句;
視圖不包含對偽字段RowNum的任何引用;
視圖不包含任何組函數;
不能使用Distinct子句;
Where子句包含的嵌套的表表達式不能與From子句引用同一個表。
轉載于:https://www.cnblogs.com/jiajiayuan/archive/2011/07/13/2104934.html
總結
以上是生活随笔為你收集整理的SQL Server之视图基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: poj-2828 Buy Tickets
- 下一篇: 我在51CTO安家了。。。