今天就先發一篇資料庫的基礎文章,因為最近碰到過幾個SQL Developer的工作,所以趁此機會把以前學校學的東西都揀揀。好了,廢話不多說,進入正題吧。
首先View是幹什麼用的呢?
Views allow you to create a virtual representation of table data using a SELECT statement as its definition.
這句話說白了也就是說view是一種表的虛擬表現形式.
View具體能幹些什麼呢?
- simplify data access for query writers. (簡化資料訪問)
- managing security and protecting sensitive data.(許可權管理和保護敏感性資料)
- grant permissions exclusively to views, rather than to the underlying tables (不直接分配表的許可權給使用者,用view來替代)
- expose only those columns that you wish the end user to see (可以讓終端使用者只看到他們要看的列)
- allow direct data updates. (允許更新資料)
以上這幾點都是view再SQL server裡面具體的作用。
View 的種類?
- Regular View (普通的view,我的理解就是最簡單的view定義)
- 不要嵌套view (例如用一個view 去叫另外一個view)
- 如果可以盡量用stored procedure來代替view.(和view對比,每一次訪問view,這個view的execution plan就會重新編譯一次)
- Indexed View (索引的view,和table差不多,先定義普通view,然後再加上clustered index和non-clustered index. 注意:clustered index只能有一個)
- Distributed Partitioned View (分布式的view,這種view用UNION ALL 把幾個不同的SQL Server的table結合在一起產生一個單獨的table)
建立View的文法
CREATE VIEW [ schema_name . ] view_name [ (column [ ,n ] ) ]
[ WITH [ ENCRYPTION ] [ SCHEMABINDING ] [ VIEW_METADATA ] [ ,n ] ]
AS select_statement
[ WITH CHECK OPTION ]
具體如何看懂這些文法,請參考這篇文章這裡
再建立view的時候有幾條規則需要注意一下
第一 select運算式最多隻能定義1024個列
第二 INTO, OPTION, COMPUTE, COMPUTE BY 還有引用其他表格變數都不能用
第三 ORDER BY不能直接用,除非和TOP一起用
困了。。。。明天繼續寫!待續