视图

                                                                             视图
一.视图是什么?
视图是一张虚拟表,视图中存在的是一堆sql语句(不能认为保存的是数据)
2.根具不同的需求,一张表可以提炼N个视图

3.视图封装sql语句限定条件(试图中不能带有into,视图中不能出现临时表)

二.如何创建视图?

1.创建视图语法:

create view view_name
   as 
   <select 语句>

注释:视图总是显示最近的数据。每当用户查询视图时,数据库引擎通过使用 SQL 语

句来建数据。


创建视图的限制:
在创建视图时,还要注意试图必须满足以下几点限制:
<1>.不能将规则或者DEFAULT定义关联于视图。
<2>.定义视图的查询中不能含有ORDER BY\COMPURER\COMPUTER BY 子句和INTO关键字
<3>.如果视图中某一列是一个算术表达式、构造函数或者常数,而且视图中两个或者更多的不同列拥有一个相同的名字(这种情况通常是因为在视图的定义中有一个连接,而且这两个或者多个来自不同表的列拥有相同的名字),此时,用户需要为视图的每一列指定列的名称。



2.删除视图语法:

drop view view_name


3.使用t-sql语句查看视图数据

select col_name1,col_name2,----- from view_name

三:为什么使用视图

  •    视图隐藏了底层的表结构,简化了数据访问操作
  •    因为隐藏了底层的表结构,所以大大加强了安全性,用户只能看到视图提供的数据
  •    使用视图,方便了权限管理,让用户对视图有权限而不是对底层表有权限进一步加强了安全性
  •    视图提供了一个用户访问的接口,当底层表改变后,改变视图的语句来进行适应,使已经建立在这个视图上客户端程序不受影响

 

四:视图分类

 视图在SQL中可以分为三类

  1.      普通视图(Regular View)
  2.      索引视图(Indexed View)
  3.      分割视图(Partitioned View)

索引视图可以看作是一个和表(Table)等效的对象!

    SQL Server中的索引视图和Oracle中的Materialized View是一个概念.想要理解索引视图,必须先理解聚集索引。聚集索引简单来说理解成主键,数据库中中的数据按照主键的顺序物理存储在表中,就像新华字典,默认是按照ABCD….这样的方式进行内容设置。ABCD….就相当于主键.这样就避免了整表扫描从而提高了性能.因此一个表中只能有一个聚集索引。

    对于索引视图也是,为一个视图加上了聚集索引后。视图就不仅仅再是select语句和表的metadata了,索引视图会将数据物理存在数据库中,索引视图所存的数据和索引视图中所涉及的底层表保持同步。

    理解了索引视图的原理之后,我们可以看出,索引视图对于OLAP这种大量数据分析和查询来说,性能将会得到大幅提升。尤其是索引视图中有聚合函数,涉及大量高成本的JOIN,因为聚合函数计算的结果物理存入索引视图,所以当面对大量数据使用到了索引视图之后,并不必要每次都进行聚合运算,这无疑会大大提升性能.



    而同时,每次索引视图所涉及的表进行Update,Insert,Delete操作之后,SQL Server都需要标识出改变的行,让索引视图进行数据同步.所以OLTP这类增删改很多的业务,数据库需要做大量的同步操作,这会降低性能。

    在SQL Server中实现索引视图是一件非常,简单的事,只需要在现有的视图上加上唯一聚集索引.但SQL Server对于索引视图的限制却使很多DBA对其并不青睐:

    比如:

  • 索引视图涉及的基本表必须ANSI_NULLS设置为ON
  • 索引视图必须设置ANSI_NULLS和QUOTED_INDETIFIER为ON
  • 索引视图只能引用基本表
  • SCHEMABINDING必须设置
  • 定义索引视图时必须使用Schema.ViewName这样的全名
  • 索引视图中不能有子查询
  • avg,max,min,stdev,stdevp,var,varp这些聚合函数不能用


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值