视图的成效

数据库 4
数据库

视图简要介绍:

视图能够作为定义在SQL
Server上的虚拟表。视图正如其名字的意思同样,是另一种查看数据的入口。

例行视图本身并不存款和储蓄实际的多少,而唯有是由SELECT语句组成的询问定义的虚拟表 

从数据库系统里面来看,视图是由一张或多张表中的数据整合的,从数据库系统外部来看,视图就如同一张表同样,对表能够实行的相似操作都足以应用于视图。

比如查询,插入,修改,删除操作等,但插入、修改、删除等的操作实际对于本来数据表的操作。

视图的效率:

一、视图隐藏了尾部的表结构,简化了数量访问操作,客户端不再需求明白底层表的布局及其之间的涉及。

贰、视图提供了3个联结访问数据的接口。(即能够允许用户通过视图访问数据的七台河体制,而不给予用户一向访问底层表的权限)

三、从而抓好了安全性,使用户只雅观看视图所出示的数量。

肆、视图还足以被嵌套,三个视图中得以嵌套另2个视图。

 

语法:

 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 子句中援引的靶子开始展览接纳。

ENCEscortYPTION:对加密开始展览加密,加密之后不可修改。使用 WITH ENCPRADOYPTION
能够防备将视图作为 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        --使用视图查询

数据库 1

数据库 2

索引视图:

 1 --判断用户自定义视图是否存在
 2 if exists(select * from sysobjects where id=OBJECT_ID(N'v_Stu_Cou_Index') and objectproperty(id,N'IsView')=1)
 3 drop view v_Stu_Cou_Index        --删除视图
 4 go
 5 create view dbo.v_Stu_Cou_Index      --创建视图
 6 with schemabinding        --指定架构绑定
 7 as
 8     select S_Id,S_StuNo,S_Name,S_Sex,S_Height,S_BirthDate,c.C_Id,c.C_Name
 9     from dbo.Student s
10     inner join dbo.Course c on s.C_S_Id=c.C_Id
11     where s.C_S_Id is not null
12 go
13 
14 --在视图 v_Stu_Cou_Index 上建立唯一的聚集索引
15 create unique clustered index Index_View on v_Stu_Cou_Index(S_StuNo)
16 
17 select * from v_Stu_Cou_Index        --使用视图查询

数据库 3

数据库 4

数据库,PS:索引视图涉及的基本表必须ANSI_NULLS设置为ON。索引视图必须设置
ANSI_NULLS 和 QUOTED_INDETIFIE奥德赛 为
ON。索引视图只可以引用基本表。(即不能够嵌套视图)

不可能不采取 WITH SCHEMABINDING 绑定架构。定义索引视图时务必使用
Schema.ViewName 那样的姓名。(即须求钦定视图的主人)

定义索引视图的表也亟须钦赐全数者,例如:dbo。

定义索引视图不可能应用外接连。(即 left join/left outer join、right
join/right outer join、outer join/full outer join)

 

分区视图:

分区视图是由 UNION ALL
的有所成员表定义的视图,即具有一样的表结构、字段、数据类型等,分化样的数目集。

分区视图又分为
本地式分区视图和布满式分区视图,作者的知道便是本地式分区视图就是同一个数据仓库储存在同样的表结构、字段、数据类型等的表使用  UNION
ALL 创立的视图;

遍及式分区视图就是数量源存在于分裂的数据库或差异的数据库服务器使用 UNION
ALL 创设的视图。

 1 --判断用户自定义视图是否存在
 2 if exists(select * from sysobjects where id=OBJECT_ID(N'v_Stu_Cou_Par') and objectproperty(id,N'IsView')=1)
 3 drop view v_Stu_Cou_Par        --删除视图
 4 go
 5 create view dbo.v_Stu_Cou_Par      --创建视图
 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 s1
 9     left join Course c on s1.C_S_Id=c.C_Id
10     where s1.C_S_Id is not null
11 
12     union all
13 
14     select S_Id,S_StuNo,S_Name,S_Sex,S_Height,S_BirthDate,c.C_Id,c.C_Name
15     from Student_back s2
16     left join Course c on s2.C_S_Id=c.C_Id
17     where s2.C_S_Id is not null
18 go
19 
20 select * from v_Stu_Cou_Par        --使用视图查询

当底层表的数码产生更动是,使用 sql 系统存款和储蓄进度sp_refreshview 更新视图数据。

1 exec sp_refreshview 'v_Stu_Cou_Par'        -- v_Stu_Cou_Par 视图名称

动用 sql 系统存款和储蓄进程 sp_helptext 获取自定义视图创设的 T-SQL 文本。

1 exec sp_helptext 'v_Stu_Cou_Par'    -- v_Stu_Cou_Par 视图名称

 PS:视图无法包涵 O哈弗DESportage BY 子句,除非SELECT语句的抉择列表中还有三个 TOP
子句。

    视图无法采取 INTO 关键字。视图无法包涵 OPTION 子句。

    视图不可能有对如今表或表变量的引用。视图最多能够有 102四 列。

 

参考:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图