SQL Server视图

版权声明: https://blog.csdn.net/ClearLoveQ/article/details/82848990
1.视图语法
	CREATE VIEW <视图名>
	AS
	SELECT 语句
	
	上面是基本语法,下面是延伸语法:
	CREATE VIEW [<模式名>].<视图名>[<列名列表>]
	[WITH [ENCRYPTION] [,SCHEMABINDING] [,VIEW_METADATA]]
	AS
	<SELECT statement>
	WITH CHECK OPTION
2.使用视图修改数据,在INSTEAD OF 触发器之前
	如果视图包含联结,大多数情况下不能插入或删除,除非利用INSTEAD OF触发器,但是在一些情况下,比如只更新一个表的列时,可以无需INSTEAD OF触发器;
	如果视图引用一个表,并且所有必须的表中的字段要么暴露在视图中,要么拥有默认值,那么能够使用INSERT 数据而无需用到INSERT OF触发器,否则必须使用触发器。
	
	如果视图涉及的表不止一个,多数情况下,如果不是使用触发器,使用视图修改数据是不可以的;
	必须的字段一定要出现在视图中或有默认值;
	插入的或更新的行必须满足视图底层的SELECT语句中使用的WHERE标准。
	
3.修改视图
	ALTER VIEW <视图名>,[<视图名>,[...n]]
4.删除视图
	DROP VIEW <视图名>,[<视图名>,[...n]]
5.保护代码:加密视图
	要加密视图,只需使用WITH INCRYPTION选项,如果习惯使用WITH CHECK OPTION子句,那么,在WITH ENCRYPTION选项上有两处需要注意:
	WITH ENCRYPTION跟在视图名之后,但在AS关键字之前;
	WITH ENCRYPTION不使用OPTION关键字。
	视图一旦加密,将不能回头,请务必将源代码存储在其他地方。
6.模式绑定
	本质上,模式绑定把视图所依赖的东西(表或其他视图)绑定到视图上,这样做的意义在于,除非先删除了使用模式绑定的视图,否则没人能对那些对象进行修改。
	这样做的原因:防止别人误删或者修改了和视图有关的底层表;
						   将允许索引视图,如果要想在视图上建立索引,必须使用SCHEMABINDING选项创建视图
	如果准备创建模式绑定的用户定义函数,而该函数引用了视图,那么视图也必须是模式绑定的。
7.如果要创建索引视图,必须:
	使用SCHEMABINDING选项;
	如果视图引用了任何用户定义函数,则该函数必须是模式绑定的;
	视图不能引用其他的视图,只能引用基表和UDF;
	视图中使用的表或者UDF必须使用两部分命名约定来引用的,并且必须与视图拥有相同的使用者;
	视图引用的所有对象必须与视图在同一个数据库当中;
	在创建视图和所有底层表时,ANSI_NULLS和QUOTED_IDENTIFIER选项必须设置为ON(使用SET命令);
	视图引用的所有函数必须是确定的。
8.分区视图
	现在已经被分区表所取代
9.使用EXEC sp_helptext '<视图名>'来显示视图的基础代码,避免使用系统表
10.在生产查询中尽可能少的使用视图,视图添加额外的开销并有损性能
11.视图的常见用途:
	筛选行;保护敏感数据;减少数据库的复杂性;把多个物理数据库抽象为一个逻辑数据库
12.不要基于视图而创建视图!!!!

猜你喜欢

转载自blog.csdn.net/ClearLoveQ/article/details/82848990
今日推荐