VIEW是一个虚拟的包含查询方式的表对象。它本身并不包括实际的数据,它的目的是隔离真实的数据存储方式,并提供给用户一个简单的展现方式,而且能更好的控制权限。
VIEW的定义必须满足下面三个规则:
- 不能使用ORDER BY方式,除非里面包含TOP或者FOR XML的定义
- 所有的结果列必须有名字
- 所有的结果列的名字必须唯一
VIEW是不会跟着实际表的结构变化而自动变化的,因此你必须养成良好的习惯,在修改了表的结构以后,手动对相关的VIEW进行刷新.
刷新的方式可以使用系统的存储过程sp_refreshview
比如:exec sp_refreshview 'dbo.view_new';
当然,为了麻烦我们可以使用下列的sql来创建批量刷新VIEW的语句
SELECT N'EXEC sp_refreshview '
+ QUOTENAME(VIEW_NAME, '''') + ';' AS cmd
FROM (SELECT QUOTENAME(TABLE_SCHEMA)
+ N'.' + QUOTENAME(TABLE_NAME) AS VIEW_NAME
FROM INFORMATION_SCHEMA.VIEWS) AS V
WHERE OBJECTPROPERTY(OBJECT_ID(VIEW_NAME), 'IsSchemaBound') = 0
VIEW OPTION说明
WIHT ENCRYPTION 加密的方式创建VIEW,这样创建的VIEW,编辑和导出SQL时是看不到其语句的,目的就是保护实际的数据结构
WITH SCHEMABINDING 使用这个选项的话,当你试图在删除实体表相关字段时,会得到错误提示
WITH CHECK OPTION 使用这个选择的话,当你对VIEW进行insert和update的时候会进行验证