[聚合文章] SQL Server创建视图——视图的作用

SQL Server 1900-01-01 11 阅读

视图简介:

视图可以看作定义在SQL Server上的虚拟表。视图正如其名字的含义一样,是另一种查看数据的入口。

常规视图本身并不存储实际的数据,而仅仅是由SELECT语句组成的查询定义的虚拟表 。

从数据库系统内部来看,视图是由一张或多张表中的数据组成的,从数据库系统外部来看,视图就如同一张表一样,对表能够进行的一般操作都可以应用于视图。

例如查询,插入,修改,删除操作等,但插入、修改、删除等的操作其实对于原始数据表的操作。

视图的作用:

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

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

3、从而加强了安全性,使用户只能看到视图所显示的数据。

4、视图还可以被嵌套,一个视图中可以嵌套另一个视图。
1 CREATE [ OR ALTER ] VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ]
2 [ WITH <view_attribute> [ ,...n ] ]
3 AS select_statement
4 [ WITH CHECK OPTION ]
5 [ ; ]
6
7 <view_attribute> ::=
8 {
9 [ ENCRYPTION ]
10 [ SCHEMABINDING ]
11 [ VIEW_METADATA ]
12 }
13 <select_statement> ::=
14 [ WITH <common_table_expression> [ ,...n ] ]
15 SELECT <select_criteria>
参数:

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

view_name:是视图的名称。

column:是视图中用于列的名称。仅当列从算术表达式,函数或常数派生时,才需要列名称; 当两个或多个列可能具有相同的名称时,通常是因为连接; 或者当视图中的列被指定与其派生的列的名称不同的名称时。列名也可以在 SELECT 语句中分配。如果列未指定,则视图列获得相同的名称作为 SELECT 语句中的列。

AS:指定视图要执行的操作。

select_statement:是定义视图的 SELECT 语句。该语句可以使用多个表和其他视图。需要适当的权限才能从创建的视图的 SELECT 子句中引用的对象进行选择。

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

SCHEMABINDING:将视图绑定到底层所应用到的表。指定 SCHEMABINDING 时,不能以影响视图定义的方式修改表。必须首先修改或删除视图定义,以删除要修改的表的依赖关系。使用 SCHEMABINDING 子句创建的视图的视图或表不能删除,除非该视图被删除或更改,以使其不再具有绑定。

VIEW_METADATA:当使用 WITH VIEW_METADATA 创建视图时,返回的是视图的元数据,否则返回的元数据是视图所引用表的元数据。
1 --判断用户自定义视图是否存在
2 if exists(select * from sysobjects where id=OBJECT_ID(N'v_Stu_Cou') and objectproperty(id,N'IsView')=1)
3 drop view v_Stu_Cou --删除视图
4 go
5 create view dbo.v_Stu_Cou --创建视图
6 as
7 select S_Id,S_StuNo,S_Name,S_Sex,S_Height,S_BirthDate,c.C_Id,c.C_Name
8 from Student s
9 left join Course c on s.C_S_Id=c.C_Id
10 where s.C_S_Id is not null
11 go
12
13
14 select * from v_Stu_Cou --使用视图查询


注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。