关于SQL Server的view
今天就先发一篇数据库的基础文章,因为最近碰到过几个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 ]
[ WITH [ ENCRYPTION ] [ SCHEMABINDING ] [ VIEW_METADATA ] [ ,n ] ]
AS select_statement
[ WITH CHECK OPTION ]
具体如何看懂这些语法,请参考这篇文章这里
再创建view的时候有几条规则需要注意一下
第一 select表达式最多只能定义1024个列
第二 INTO, OPTION, COMPUTE, COMPUTE BY 还有引用其他表格变量都不能用
第三 ORDER BY不能直接用,除非和TOP一起用
困了。。。。明天继续写!待续