视图的作用:

1、视图隐藏了底层的表结构,简化了数据访问操作,客户端不再需要知道底层表的结构及其之间的关系。

2、建立中间表,方便查询。

3、基表中的数据就有了一定的安全性。视图提供了一个统一访问数据的接口。(即可以允许用户通过视图访问数据的安全机制,而不授予用户直接访问底层表的权限)。

因为视图是虚拟的,物理上是不存在的,只是存储了数据的集合,我们可以将基表中重要的字段信息,可以不通过视图给用户,视图是动态的数据的集合,数据是随着基表的更新而更新用户对视图只能查询,不可以随意地更改和删除,可以保证数据的安全性。

4、可以合并分离的数据,创建分区视图。

视图还可以被嵌套,一个视图中可以嵌套另一个视图。


创建表:

--------创建表---------判断表是否存在--if exists (select * from sysobjects where name = ‘Tab_EdsProd’)drop table Tab_EdsProdgo--创建表create table Tab_EdsProd(Mid int identity(1,1) primary key,Code varchar(10) null,Name varchar(20) null)--添加数据insert into Tab_EdsProd(Code,Name) values(‘001’,‘张三’);insert into Tab_EdsProd(Code,Name) values(‘002’,‘李四’)--查询数据select * from Tab_EdsProd

创建视图:

--------创建视图-------–判断是否存在–if exists (select * from sysobjects where name = ‘View_EdsProd’)drop view View_EdsProdgo--创建视图create view View_EdsProd

with ENCRYPTION -- 为不可修改视图asselect * from Tab_EdsProd where Mid>1go--使用视图–select *from View_EdsProd

说明:

sqlserver的主要使用场景(Server视图创建与作用详解)(1)

schema_name:是视图所有者的名称,一般为 dbo。(指定视图所有者名称是可选的。)

view_name:是视图的名称。

ENCRYPTION:对加密进行加密,加密之后不可修改。使用 WITH ENCRYPTION 可以防止将视图作为 SQL Server 复制的一部分进行发布。


分区视图:

分区视图是由 UNION ALL 的所有成员表定义的视图,即拥有相同的表结构、字段、数据类型等,不相同的数据集。

分区视图又分为 本地式分区视图和分布式分区视图。本地式分区视图是同一个数据库存在相同的表结构、字段、数据类型等的表使用 UNION ALL 创建的视图;

分布式分区视图就是数据源存在于不同的数据库或不同的数据库服务器使用 UNION ALL 创建的视图。

sqlserver的主要使用场景(Server视图创建与作用详解)(2)

视图不能包含 ORDER BY 子句,除非SELECT语句的选择列表中还有一个 TOP 子句。

视图不能使用 INTO 关键字。视图不能包含 OPTION 子句。

视图不能有对临时表或表变量的引用。视图最多可以有 1024 列。


with encryption 为不可修改视图:

如果添加该选项,则可以确保没有人能够查看得到您的代码(甚至是你自己)。如果要构建发布商业软件,或者出于安全性的考虑不想让用户看到所修改的或访问的数据,那么这个选项是非常有用的,很明显没如果想再以后子重新创建触发器,那么需要保存创建触发器的代码副本,以便在其他地方使用。

和视图与存储过程一样,使用with encryption 选项需要记住的是,每次在触发器上使用alter 语句时都必须重新应用该选项。如果使用alter trigger 语句不包含with encryption 选项,那么触发器就不再被加密。

视图加密与不加密:

sp_helptext,查看视图SQL语句

sqlserver的主要使用场景(Server视图创建与作用详解)(3)

使用dbForge SQL Decryptor查看建视图语句

,