MSSQL视图使用详解

MSSQL-sql server-视图简介 转自:http://www.maomao365.com/?p=4511 一、视图简介 视图MSSQL中是一张虚拟表。 视图的数据由sql语句定义生成,视图中指定新生成数据的列名称和数据格式,视图中的数据都来源于数据库基表,视图也可以多层嵌套(视图从另外一个视图中生成); 视图中的基础数据不会占用mssql的数据存储空间,由mssql动态生成而来。 视图数据展示上和物理表一致,... 阅读详情

视图是为用户对数据多种显示需求而创建的,其主要用在一下几种情况:
 (1)限制用户只能访问特定表特定条件的内容,提高系统的安全性。
 (2)隐藏表结构、创建多种形式的数透视,满足不同用户需求。
 (3)将复杂的SELECT语句和表JION形成一个视图,给用户提供一个良好的接口。
 (4)为使用频率较高的联表聚合运算创建索引视图,以提升程序的性能。
 (5)创建分区视图调用远程数据,实现数据的分布式存储与查询,提升程序的吞吐能力。

一了解视图
         视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图在数据库中并不是以数据值存储集形式存在,除非是索引视图。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
 对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其他数据库的一个或多个表,或者其他视图。分布式查询也可用于定义使用多个异类源数据的视图。例如,如果有多台不同的服务器分别存储您的单位在不同地区的数据,而您需要将这些服务器上结构相似的数据组合起来,这种方式就很有用。

二、视图类型
 在 SQL Server 2005 中,您可以创建标准视图、索引视图和分区视图。
 标准视图
        标准视图组合了一个或多个表中的数据,您可以获得使用视图的大多数好处,包括将重点放在特定数据上及简化数据操作。
 索引视图      
       索引视图是被具体化了的视图,即它已经过计算并存储。可以为视图创建索引,即对视图创建一个唯一的聚集索引。索引视图可以显著提高某些类型查询的性能。索引视图尤其适于聚合许多行的查询。但它们不太适于经常更新的基本数据集。
 分区视图
        分区视图在一台或多台服务器间水平连接一组成员表中的分区数据。这样,数据看上去如同来自于一个表。联接同一个 SQL Server 实例中的成员表的视图是一个本地分区视图。

三、使用视图的情况
       视图通常用来集中、简化和自定义每个用户对数据库的不同认识。视图可用作安全机制,方法是允许用户通过视图访问数据,而不授予用户直接访问视图基础表的权限。视图可用于提供向后兼容接口来模拟曾经存在但其架构已更改的表。还可以在向 Microsoft SQL Server 2005 复制数据和从其中复制数据时使用视图,以便提高性能并对数据进行分区。
着重于特定数据视图使用户能够着重于他们所感兴趣的特定数据和所负责的特定任务。不必要的数据或敏感数据可以不出现在视图中。例如, AdventureWorks 示例数据库中的视图 vBikes 允许用户查看当前库存的所有自行车的名称。该视图将从 Product 表中筛选掉除 Name 之外的所有字段,并仅返回自行车成品的名称,而不是自行车配件的名称。

 简化数据操作
        视图可以简化用户处理数据的方式。可以将常用联接、投影、UNION 查询和 SELECT 查询定义为视图,以便使用户不必在每次对该数据执行附加操作时指定所有条件和条件限定。例如,可以将一个用于报表目的且执行子查询、外联接和聚合来从一组表中检索数据的复杂查询创建为视图。视图简化了对数据的访问,因为每次生成报表时无需编写或提交基础查询,而是查询视图。有关对数据进行操作的详细信息,请参阅查询基础知识。
 尽管不是复杂查询, AdventureWorks 示例数据库中的视图 vBikes 仍允许用户着重于特定数据,而不必构造生成视图所需的 JOIN 子句。
 还可以创建用户定义的内联函数,在逻辑上作为参数化视图运行,或者作为在 WHERE 子句搜索条件或查询的其他部分中含有参数的视图运行。
 提供向后兼容性
     视图使您能够在表的架构更改时为表创建向后兼容接口。例如,一个应用程序可能引用了具有以下架构的非规范化表:
 Employee(Name, BirthDate, Salary, Department, BuildingName)
 若要避免在数据库中重复存储数据,可以通过将该表拆分为下列两个表来规范化该表:
 Employee2(Name, BirthDate, Salary, DeptId)
 Department(DeptId, BuildingName)
 若要提供仍然可引用 Employee 中数据的向后兼容接口,可以删除旧的 Employee 表并以以下视图中的内容替换它:
 自定义数据
        视图允许用户以不同方式查看数据,即使在他们同时使用相同的数据时也是如此。这在具有许多不同目的和技术水平的用户共用同一数据库时尤其有用。例如,可创建一个视图以仅检索由客户经理处理的客户数据。该视图可以根据使用它的客户经理的登录 ID 决定检索哪些数据
 导出和导入数据
        可使用视图将数据导出到其他应用程序。例如,您可能希望使用 AdventureWorks 数据库中的 Customer 和 SalesOrderHeader 表在 Microsoft Excel 中分析销售数据。为此,可基于 Customer 和 SalesOrderHeader 表创建视图。然后可以使用 bcp 实用工具导出视图定义的数据。如果使用 INSERT 语句可以在某些视图中插入行,那么使用 bcp 实用工具或 BULK INSERT 语句也可将数据文件中的数据导入视图。
 跨服务器组合分区数据
        Transact-SQL UNION 集合运算符可在视图内使用,将单独表的两个或多个查询的结果组合到单一的结果集中。这在用户看来是一个单独的表,称为分区视图。例如,如果一个表包含华盛顿的销售数据,另一个表包含加利福尼亚的销售数据,则可以对这两个表使用 UNION 创建一个视图。该视图代表这两个地区的销售数据

四、视图解析
 SQL Server 2005 查询处理器对索引视图和非索引视图将区别对待:
 索引视图的行以表的格式存储在数据库中[只有创建了索引才分配存储空间]。如果查询优化器决定使用查询计划的索引视图,则索引视图将按照基表的处理方式进行处理。
 只有非索引视图的定义才存储,而不存储视图的行。查询优化器将视图定义中的逻辑纳入执行计划,而该执行计划是它为引用非索引视图的 SQL 语句生成的。
 SQL Server 查询优化器用于决定何时使用索引视图的逻辑与用于决定何时对表使用索引的逻辑相似。如果索引视图中的数据包括所有或部分 SQL 语句,而且查询优化器确定视图的某个索引是低成本的访问路径,则不论查询中是否引用了该视图的名称,查询优化器都将选择此索引。
 当 SQL 语句引用非索引视图时,分析器和查询优化器将分析 SQL 语句的源和视图的源,然后将它们解析为单个执行计划。没有单独用于 SQL 语句或视图的计划。
 与所有索引相同,仅当查询优化器确定在 SQL Server 的查询计划中使用索引视图有益时,SQL Server 才会选择使用视图索引。当满足下列条件时,SQL Server 查询优化器使用索引视图:
    当满足下列条件时,SQL Server 查询优化器使用索引视图:
  下列会话选项均设置为 ON:
  ANSI_NULLS
  ANSI_PADDING
  ANSI_WARNINGS
  ARITHABORT
  CONCAT_NULL_YIELDS_NULL
  QUOTED_IDENTIFIER
  NUMERIC_ROUNDABORT 会话选项设置为 OFF。
  查询优化器查找视图索引列与查询中的元素之间的匹配,例如:
  WHERE 子句中的搜索条件谓词
  联接操作
  聚合函数
  GROUP BY 子句
  表引用
  估计的索引使用成本是查询优化器考虑使用的所有访问机制中的最低成本。
  查询中引用(直接或通过展开视图访问其基础表)的且与索引视图中的表引用相对应的每个表在该查询中都必须具有应用于表的相同提示集
 我们不必SELECT的子句中显式引用索引视图,查询优化器即可使用该索引视图。
五、设计和实现视图
         1、创建标准视图
 

SET  ANSI_NULLS  ON
 
GO
 
SET  QUOTED_IDENTIFIER  ON
 
GO
 
CREATE   VIEW   [ dbo ] . [ Product_Name ]
 
MSSQL视图使用场景,使用方法 4. 简化数据查询和报表生成:通过视图,可以将常用的查询逻辑封装成视图,用户只需要通过简单的查询语句调用视图即可得到结果,简化了数据查询和报表生成的过程。1. 简化复杂查询:当某个查询涉及多个表,并且需要进行多个条件筛选或者复杂的计算时,使用视图可以将这个复杂的查询逻辑封装起来,简化使用者的查询过程。3. 更新视图:可以使用UPDATE语句更新视图中的数据,语法与更新表的数据相同。3. 数据抽象和封装:通过视图,可以隐藏底层表的细节,只向用户展示需要的数据,实现数据抽象和封装,简化用户的操作。 阅读详情

相关推荐

MSSQL_11 开发篇-视图

《锋利的SQL》 - 视图 - 游标

Fergus的博客 353

msdasql mysql_SQL Server访问MySql

原标题:SQL Server访问MySql使用环境:操作系统:window7数据库SQL Server2005、MySql5.01、在安装了SQL Server的服务器上安装MySql的ODBC驱动:下载链接:http://dev.mysql.com/downloads/mirror.php?id=376346点过去之后会链接到以下的页面,不用登陆,直接点击下面的“No thanks,just ...

weixin_42316073的博客 652

MSDASQL全称

MSDASQLMicrosoft OLE DB Provider for ODBC。一项允许在 OLEDB 和 ADO(它在内部使用 OLEDB)上构建的应用程序通过 ODBC 驱动程序访问数据源的技术。 MSDASQL 是用于连接到 ODBC(而不是数据库)的 OLEDB 访问接口。 MSDASQL 随 Windows 操作系统提供。 参考:http://blog.csdn

Segen_Jaa的专栏 7289

mssql刷新视图

create proc 刷新视图 as declare @name nvarchar(max) DECLARE vcursor CURSOR FOR SELECT name from sys.views order by create_date asc OPEN vcursor FETCH NEXT FROM vcursor INTO @name WHILE @@FETCH_STATUS = ...

slwsss的专栏 556

SqlServer视图——视图的创建与使用

SqlServer系列之视图的创建与使用: 什么是视图视图的概述 这里是引用在数据查询中,可以看到数据表设计过程中,考虑到数据的冗余度低、数据一致性等问题,通常对数据表的设计要满足范式的要求,因此也会造成一个实体的所有信息保存在多个表中。 当检索数据时,往往在一个表中不能够得到想要的所有信息。 为了解决这种矛盾,在SQL Server中提供了视图视图的概念 视图是一种数据库对象,是从一个或者多个数据表或视图中导出的虚表,视图的结构和数据是对数据表进行查询的结果,只存放视图的定义,不存放视图.

熊泽-学习中的苦与乐 3万+

mssql sqlserver 视图如何加密,让第三方用户查看不到其中的SQL语句

原文:mssql sqlserver 视图如何加密,让第三方用户查看不到其中的SQL语句 转自:http://www.maomao365.com/?p=6719 摘要: 下文讲述视图加密的方法分享,通过此方法可以使视图只可使用,无法获取视图sql脚本的内容,如下所示: 在创建视图的语法中,可以加一些可选关键字,如 with encryption...

weixin_34343000的博客 726

sqlserver 视图使用

视图 1、 什么是视图 视图就是一个虚拟的数据表,该数据表中的数据记录是有一条查询语句的查询结果得到的。 2、 创建视图准则 创建视图需要考虑一下准则: # 视图名称必须遵循标识符的规则,该名称不得与该架构的如何表的名称相同 # 你可以对其他视图创建视图。允许嵌套视图,但嵌套不得超过32层。视图最多可以有1024个字段 # 不能将规则和default定义于视图相关联 # 视图的查询不能包含...

一点一滴 2万+

mssql视图使用

MS SQL视图使用详解视图是为用户对数据多种显示需求而创建的,其主要用在一下几种情况: (1)限制用户只能访问特定表特定条件的内容,提高系统的安全性。 (2)隐藏表结构、创建多种形式的数透视,满足不同用户需求。 (3)将复杂的SELECT语句和表JION形成一个视图,给用户提供一个良好的接口。 (4)为使用频率较高的联表聚合运算创建索引视图,以提升程序的性能。 (5)创建分区视图调用远程

Sam.yu的专栏 1974

MSSQL 视图刷新

标题MSSQL 视图刷新机制 创建基础表 --01创建基础表 create table a (ID int identity(0,1),col01 varchar(10)); go insert a values('001') go 创建视图 --02创建视图 create view v_a as select * from a go SELECT * FROM v_a go 修改表结构,新增列col02,新增的列并未包含在视图中 --03修改表结构,新增列col02,新增的列并未包含在视

loveuo86的专栏 731

python 查询sqlserver 视图_SQL Server中索引视图用法详解

在上述的文章中我们讲到,SQL SERVER视图其实就是一段SQL语句,在视图被调用时动态执行定义的SQL,返回结果集。在SQL Server2005后,微软推出了索引视图,索引视图与之前的普通视图有一个本质的区别,就是索引视图中的结果集是保存在数据库中的,而不是每次动态执行的结果。这样,查询时就可以像查询基础表一样,性能得到不少的提升。我们还可以在索引视图上创建索引,让索引视图的性能得到进一步提...

weixin_39713219的博客 332

python 查询sqlserver 视图_SQL Server视图使用中4个限制条件

1限制条件一:定义视图的查询语句中不能够使用某些关键字我们都知道,视图其实就是一组查询语句组成。或者说,视图是封装查询语句的一个工具。在查询语句中,我们可以通过一些关键字来格式化显示的结果。如我们在平时工作中,经常会需要把某张表中的数据跟另外一张表进行合并。此时,数据库管理员就可以利用Select Into语句来完成。先把数据从某个表中查询出来,然后再添加到某个表中。当经常需要类似的操作时,我们是...

weixin_39579483的博客 607

python 查询sqlserver 视图_SQL Server查看视图定义总结

SQL Server中如何查看数据库视图的定义呢? 其实官方文档已经有一个较详细的总结了,这里在官方文档的基础上,我们再深入展开分析一下,例如如何获取系统视图的定义。知其然知其所以然吗。1:使用SQL Server Management Studio(SSMS)在“对象资源管理器”中,首先找到对应数据库中需要查看定义的视图,右键单击获取对象的定义脚本。这种方式非常简单。在此略过。2:通过脚本查看...

weixin_39648539的博客 848

MSSQL索引视图(indexed view)之简述及使用

乍一听到这个名字,可能感到有点陌生,这个对象是干嘛的呢?原理是什么?不用着急,我们看看下面的内容,慢慢就明白了。顾名思义,索引视图就是建有索引的视图,这是MSSQL提供的一项技术,用于提升某些SQL语句的查询性能。索引视图上的第一个索引必须是唯一簇索引,之后,可以在视图上创建更多的非簇索引,因为视图上的簇索引存储方式和表...

weixin_32287177的博客 170

优化 sqlserver_SQL Server 视图执行计划

视图本质上就是一个“存储的查询”。换句话说,视图是一种表示数据的逻辑方法,就好像它在一个表中一样,而不需要创建一个新表。视图的各种用途都有很好的文档说明(防止某些列被选中,减少终端用户的复杂性,等等)。在这里,我们将只关注在使用视图时在执行计划中发生的事情。关于视图,需要注意的一点是,视图不是表(当我们查看它们的执行计划时,我们会更清楚的理解这一点),但是它又像表,因此,人们倾向于将它们...

weixin_39870664的博客 640

SQL Server实验——数据库视图的定义与使用

SQL Server实验——数据库视图的定义与使用学生选课数据库的创建创建学生信息表student创建课程信息表course创建学生选课信息表sc插入相关信息视图的创建基本应用一、创建信息系(sdept=’IS’)学生信息的视图IS_Student,包含sno,sname,sage和sdept四个属性,并查看视图的内容二、创建信息系选修了1号课程的学生的视图IS_S1(至少包含sno、cno、 ...

qq_44168722的博客 9025
上一篇: MSSQL中的SET语句及查询选项详解
下一篇: MSSQL锁基础教程
Wgf2006
博客等级 码龄21年 48粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值