第08章 视图与索引
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通过使用分区视图,数据的外观象是一个单一表,并且能以 单一表的方式进行查询,而无需手动引用正确的基础表。 如果满足下列任一条件,则分区视图可被更新:
1) 2)
具有逻辑的视图定义支持 INSERT、UPDATE和DELETE语句的INSTEAD OF触发器; 视图和INSERT、UPDATE及DELETE语句均遵循为可更新分区视图定义 的规则。 返回本节首页
15
SQL Server 2005
返回本节首页
8.1.1 视图概述--视图的作用
6)跨服务器组合分区数据 T-SQL UNION集合运算符可在视图内使用,将单独表的两个 或多个查询的结果组合到单一的结果集中。 这在用户看来是一个单独的表,称为分区视图。
Байду номын сангаас
例如,如果一个表包含华盛顿的销售数据,另一个表包含加利福尼 亚的销售数据,则可以对这两个表使用UNION创建一个视图。该视图 代表这两个地区的销售数据。
SQL Server 2005
返回本节首页
19
8.1.2 创建视图--设计视图的准则
13)下列情况下必须指定视图中每列的名称: A)视图中的任何列都是从算术表达式、内置函数或常量派生 而来; B)视图中有两列或多列原应具有相同名称(通常由于视图定 义包含联接,因此来自两个或多个不同表的列具有相同的名 称); C)希望为视图中的列指定一个与其源列不同的名称。无论重 命名与否,视图列都会继承其源列的数据类型; D)其它情况下,无需在创建视图时指定列名。SQL Server会 为视图中的列指定与定义视图的查询所引用的列相同的名称和 数据类型。选择列表可以是基表中列名的完整列表,也可以是 其部分列表。
2016/8/28
SQL Server 2005
1
第8章 视图与索引
• 数据库的基本表是按照数据库设计人员的观点设计的,并不一 定符合用户的需求。 • SQL Server可以按照用户应用需求定义出新的表,这样的面向 用户的新表称为视图。 • 视图是一种虚表,对其的更新操作有限制。 • 索引技术是为在数据库中为了迅速地从庞大的数据库中找到所 需要的数据,合理使用索引技术能得到良好的查询性能。
若要避免在数据库中重复存储数据,可以通过将该表拆分为 下列两个表来规范化该表: Employee2(Name,BirthDate,Salary,DeptId)、 Department(DeptId,BuildingName)
12
SQL Server 2005
返回本节首页
8.1.1 视图概述--视图的作用
1) 分区视图: 它是在一台或多台服务器间水平连接一组成员表中的分区 数据。 本地分区视图:联接同一个 SQL Server 实例中的成员 表的视图。 分布式分区视图: 如果视图在服务器间联接表中的数据。 分布式分区视图用于实现数据库服务器联合。 联合体是一组分开管理的服务器,但它们相互协作分担 系统的处理负荷。通过这种通过分区数据形成数据库服 务器联合体的机制可以向外扩展一组服务器,以支持大 型的多层网站的处理需要。
SQL Server 2005
返回本节首页
17
8.1.2 创建视图--设计视图的准则
5)不能将AFTER触发器与视图相关联,只有INSTEAD OF触发 器可以与之相关联。 6)定义视图的查询不能包含产生多结果集的COMPUTE子句或 COMPUTE BY子句,也不能包含INTO关键字。 7)定义视图的查询不能包含ORDER BY子句,除非在SELECT语 句的选择列表中还有一个TOP子句。 8)定义视图的查询不能包含指定查询提示的OPTION子句,也 不能包含TABLESAMPLE子句。
• 主要内容:SQL Server 2005数据库系统视图的创建以及使用, 索引类型及索引的创建、使用等,内容包括:视图概述、创建 视图与使用视图、视图定义信息的查阅、视图的修改、了解与 创建索引、修改索引与查看索引信息、删除索引、全文索引与 全文搜索等。
SQL Server 2005
2
目录
• 8.1 视图 • 8.2 索引 • 8.3 全文索引与全文搜索 练习题8 上机实习7
SQL Server 2005
返回本节首页
18
8.1.2 创建视图--设计视图的准则
9)不能为视图定义全文索引定义。 10)不能创建临时视图,也不能对临时表创建视图。 11)不能删除参与到使用SCHEMABINDING子句创建的视图中的 视图、表或函数,除非该视图已被删除或更改而不再具有架构 绑定。另外,如果对参与具有架构绑定的视图的表执行ALTER TABLE语句,而这些语句又会影响该视图的定义,则这些语句将 会失败。 12)尽管查询引用一个已配置全文索引的表时,视图定义可 以包含全文查询,仍然不能对视图执行全文查询。
SQL Server 2005
返回本节首页
8
8.1.1 视图概述--视图的作用
2、视图的作用 视图通常用来集中、简化和自定义每个用户对数据 库的不同认识。 视图可用作安全机制,方法是允许用户通过视图访 问数据,而不授予用户直接访问视图基础表的权限。 视图可用于提供向后兼容接口来模拟曾经存在但其 架构已更改的表。 可在向SQL Server 2005复制数据和从其中复制数据 时使用视图,以便提高性能并对数据进行分区。
16
SQL Server 2005
8.1.2 创建视图--设计视图的准则
在创建视图前请考虑如下准则: 1)只能在当前数据库中创建视图。但是,如果使用分布式查 询定义视图,则新视图所引用的表和视图可以存在于其它数据 库甚至其它服务器中。 2)视图名称必须遵循标识符的规则,且对每个架构都必须唯 一。此外,该名称不得与该架构包含的任何表的名称相同。 3)您可以对其它视图创建视图。SQL Server 2005允许嵌套 视图。但嵌套不得超过32层。根据视图的复杂性及可用内存, 视图嵌套的实际限制可能低于该值。 4)不能将规则或DEFAULT定义与视图相关联(说明视图还是 不同于表)。
1) 索引视图: 它是被具体化了的视图,即它已经过计算并存储。 可为视图创建索引,即对视图创建一个唯一的聚集索引。 索引视图可以显著提高某些类型查询的性能。索引视图 尤其适于聚合许多行的查询。但它们不太适于经常更新 的基本数据集。
SQL Server 2005
返回本节首页
7
8.1.1 视图概述--视图类型
SQL Server 2005
返回本节首页
9
8.1.1 视图概述--视图的作用
1)着重于特定数据 视图使用户能够着重于他们所感兴趣的特定数据和所负责的特 定任务。
例如,AdventureWorks示例数据库中的视图vBikes允许用户查看当前库存 的所有自行车的名称。 CREATE VIEW vBikes AS SELECT DISTINCT p.[Name] FROM Production.Product p JOIN Production.ProductInventory i ON p.ProductID=i.ProductID JOIN Production.ProductSubCategory ps ON p.ProductSubcategoryID=ps.ProductSubCategoryID JOIN Production.ProductCategory pc ON (ps.ProductCategoryID=pc.ProductCategoryID AND =N'Bikes') AND i.Quantity > 0
SQL Server 2005
返回本节首页
10
8.1.1 视图概述--视图的作用
2)简化数据操作
视图可以简化用户处理数据的方式。可以将常用联接、投影、 UNION 查询和 SELECT 查询定义为视图,以便使用户不必在 每次对该数据执行附加操作时指定所有条件和条件限定。
可以创建用户定义的内联函数,在逻辑上作为参数化视图运 行,或者作为在 WHERE 子句搜索条件或查询的其它部分中含 有参数的视图运行。
SQL Server 2005
返回本节首页
13
8.1.1 视图概述--视图的作用
4)自定义数据
视图允许用户以不同方式查看数据,即使在他们同 时使用相同的数据时也是如此。 这在具有许多不同目的和技术水平的用户共用同一 数据库时尤其有用。
SQL Server 2005
返回本节首页
14
8.1.1 视图概述--视图的作用
SQL Server 2005
返回本节首页
5
8.1.1 视图概述
图8-1 建立视图的示意图
SQL Server 2005
返回本节首页
6
8.1.1 视图概述--视图类型
1、视图类型
1) 标准视图: 它组合了一个或多个表中的数据,您可以获得使用视图的大 多数好处,包括将重点放在特定数据上及简化数据操作。
5)导出和导入数据 可使用视图将数据导出到其它应用程序。
例如,您可能希望使用 AdventureWorks 数据库中的 Customer和SalesOrderHeader表在Microsoft Excel中分析 销售数据。为此,可基于 Customer和SalesOrderHeader 表 创建视图。 然后,使用bcp实用工具导出由该视图定义的数据。 如果可以使用 INSERT 语句向视图中插入行,则还可以使用 bcp实用工具或BULK INSERT语句将数据从数据文件导入某些 视图。
若要提供仍然引用Employee中的数据的向后兼容接口,可以 删除原有的Employee表并用以下视图替换: CREATE VIEW Employee AS SELECT Name,BirthDate,Salary,BuildingName FROM Employee2 e,Department d WHERE e.DeptId=d.DeptId
SQL Server 2005
3
8.1 视图
• • • • • 8.1.1 视图概述 8.1.2 创建视图 8.1.3 使用视图 8.1.4 视图定义信息的查阅 8.1.5 视图的修改与删除
SQL Server 2005
返回本节首页
4
8.1.1 视图概述
视图是一个虚拟表,其内容由查询定义,数据库中存储的是查 询定义对应的SELECT 语句。 同真实的表一样,视图包含一系列带有名称的列和行数据。 视图(除索引视图)在数据库中并不是以数据值存储集形式存 在。行和列数据来自由定义视图的查询所引用的表,并且在引 用视图时动态生成。 用户可以采用引用表时所使用的方法,在 T-SQL 语句中引用 视图名称来使用此虚拟表。 定义视图可以来自当前或其它数据库多个表或视图。 分布式查询也可用于定义使用多个异类源数据的视图。 通过视图进行查询没有任何限制,更新操作有些限制。
SQL Server 2005
返回本节首页
11
8.1.1 视图概述--视图的作用
3)提供向后兼容性 视图使您能够在表的架构更改时为表创建向后兼容接口。例 如,一个应用程序可能引用了具有以下架构的非规范化表: Employee(Name,BirthDate,Salary,Department,BuildingNa me)
SQL Server 2005
返回本节首页
20
8.1.2 创建视图--设计索引视图的原则
对于标准视图而言,为每个引用视图的查询动态生成结果集的开销很大, 特别是对于那些涉及对大量行进行复杂处理(如聚合大量数据或联接许 多行)的视图。 如果在查询中频繁地引用这类视图,可通过对视图创建唯一聚集索引来 提高性能。 对视图创建唯一聚集索引后,结果集将存储在数据库中,就像带有聚集 索引的表一样。 如果很少更新基础数据,则索引视图的效果最佳。维护索引视图的成本 可能高于维护表索引的成本。 如果经常更新基础数据,则维护索引视图数据的成本可能超过使用索引 视图所带来的性能收益。 如果基础数据以批处理的形式定期更新,但在更新之间主要作为只读数 据进行处理,请考虑在更新前删除所有索引视图,然后再重新生成。这 样做可以提高更新的性能。
返回81视图82索引83全文索引与全文搜索练习题8上机实习7返回81视图811视图概述812创建视图813使用视图814视图定义信息的查阅815视图的修改与删除返回本节首页返回视图是一个虚拟表其内容由查询定义数据库中存储的是查询定义对应的select语句
SQL Server数据库应用技术
第8章 视图与索引
此时,用于查询Employee表的应用程序可以从Employee视图中获取它们 的数据。 如果只从Employee中读取,则不必更改应用程序。 通过向新视图添加INSTEAD OF触发器,将对视图的INSERT、DELETE和 UPDATE操作映射到基础表,有时也可以支持更新Employee的应用程序。