SQL Server 数据库之视图(一)

1. 视图概述

视图是一个虚拟表,其内容由查询定义;对其中所引用的基本数据表来说,视图的作用于筛选相似;
定义视图的筛选能来自当前或其他数据库的一个或多个表,或者其他视图;分布式查询也能用于多个异类源数据的视图;
视图的结构和内容是通过 SQL 查询获得的,称之为视图名,能永久地保存在数据库中,用户通过 SQL 查询语句,能像其他普通关系表一样,对视图中数据进行查询,视图也可被看成是虚拟表存储查询,可通过视图访问的数据不作为独特的对象存储在数据库中;
视图在数据库中存储的是 SELECT语句,即数据库中没有存储视图这个表,而存储的是视图的定义;SELECT语句的结果构成视图所返回的虚拟表,用户可根据引用表时所使用的方法在 SQL 语句中通过引用视图名称来使用虚拟表;
使用视图能实现下列任一或所有功能:

  1. 将用户限定在表中的特定上;
  2. 将用户限定在表中的特定上;
  3. 将多个表中的列连接起来,让它们看起来像一个表;
  4. 聚合信息而非提供详细信息;
    数据库管理系统 DBMS在 SQL 语句中遇到视图引用时,会从数据库中找出所存储的相应视图的定义,然后把对视图的引用转换成对构成视图源表的等价要求,并执行这个等价请求;利用这种方式,DBMS在保持源表数据完整性的同时也保持了视图的可见性

对于一些简单视图,DBMS通过快速查询直接从源表中提取并构造出视图的每一行;对于一些复杂的视图,DBMS要根据该视图定义中的查询语句进行查询操作,并将结果存储到一个临时表中,DBMS在从这个临时表中提取数据来满足对视图操作的需求,并在不需要的时候抛弃所生成的临时表;无论DBMS如何操作,对于用户来说,结果都是相同的,就是这个视图能够在 SQL 语句中引用,就像就是一张真正关系表一样;
通过定义 SELECT语句以检索将在视图中显示的数据来创建视图,SELECT语句引用的数据表称为视图的基表
视图通常用来集中、简化和自定义每个用户对数据表的不同认识,视图可用作安全机制,方式是允许用户通过视图访问数据,而不授予用户直接访问视图基础表的权限
视图能提供向后兼容接口来模拟曾经存在但架构已更改的表,还能向 SQL Server 复制数据和从其中复制数据时使用视图,提高性能并对数据进行区分;

2. 视图的类型

SQL Server 数据库提供了以下几种类型的视图:

  1. 索引视图
    索引视图是被具体化了的视图,即已经对视图定义了进行计算并生成的数据像表一样存储,用户能为视图创建索引,即对视图创建一个唯一的聚集索引索引视图能显著提高某些类型查询的性能,尤其是聚合许多行的查询,不太适用于经常更新的基本数据表;
  2. 分趋视图
    分区视图在一台或多台服务器间水平连接一组成员表中的分区数据,使数据看起来如同来自与一个表;要注意的是,连接同一个 SQL Server 实例中成员表的视图就是一个本地分区视图;
  3. 系统视图
    系统视图包含目录元数据,能使用系统视图返回与 SQL Server 实例或该实例中定义的对象有关信息;

3. 视图的优缺点

在定义用户使用的数据库结构和增强数据库的安全保密性方面,视图起到准则作用;
使用视图的优点有:

  1. 安全保密性,通过视图,用户只能查询和修改它们能看到的数据,数据库中的其他数据既看不到也取不到;数据库授权命令能使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定的行或列上;通过视图,用户能被限制在数据的不同子集上;
  2. 查询简单性,视图能够从几个不同的关系表中提取数据,并用一个单表来表示出来,利用视图将多表查询转换为视图的单表查询
  3. 结构简单性,视图能给用户一个个人化的数据库结构外观,用一组用户感兴趣的可见表代表这个数据库的内容;
  4. 隔离变化,视图能代表一个个一致的、非变化的数据,即使是作为视图基础的源表被分隔、重新构造或重新命名的情况下,也是如此;
  5. 数据完整性,若数据被存取,并通过视图输入,DBMS能够自动校验这个数据,确保数据满足所规定的完整性约束
  6. 逻辑数据独立性,视图能使应用程序和数据库表在一定程度上独立,若没有视图,应用一定是建立在表上的;有了视图,程序可建立在视图之上,使程序与数据库表被视图分隔开来;

在定义数据库对象时不能不加选择来定义视图,视图的缺点有:

  1. 性能数据管理系统必须把视图的查询转化成对基本表的查询,若这个视图是由一个复杂的多表查询所定义的,即使是对视图的一个简单查询,数据管理系统也会将其变成一个复杂的结合体,要花费一定的时间;
  2. 修改限制,当用户视图修改视图的某些记录行时,数据库管理系统必须将其转化为对基本表的某些行的修改,对于简单视图,这很方便,但对于复杂的视图,可能是不可修改的;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值