视图说课讲解_第1页
视图说课讲解_第2页
视图说课讲解_第3页
视图说课讲解_第4页
视图说课讲解_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

视图视图介绍创建和修改视图通过视图修改数据使用视图优化性能案例企业部门经理要查询所有客户订购的产品类别个数及产品数量,而且只有部门经理以上职位的人才能参看。视图介绍视图用于间接的访问其他的表或视图中的数据。视图是一种虚拟的表,并不真正存储数据,只是一个媒介的作用。在视图中被查询的表称为基表。视图的优点定制数据让不同的用户以不同的方式看到不同或相同的数据集只关注于重要的或适当的数据,限制对敏感数据的访问简化操作用户直接查询视图,而不需要写查询语句或执行脚本安全性不必对用户赋予查询基表中特定列的权限,而只需要赋予用户查询视图的权限即可视图视图简介创建和修改视图通过视图修改数据使用视图优化性能创建和修改视图创建视图更改和删除视图查找视图定义信息创建视图创建视图可通过使用创建视图向导、企业管理器或Transact-SQL语句创建视图

执行CREATEVIEW语句的用户必须是sysadmin、db_owner或db_ddladmin角色的成员,或具有CREATEVIEW权限。在视图中引用的所有表和视图上,也要拥有SELECT权限CREATEVIEWdbo.ViwOrderSubtotals(OrderID,Subtotal)ASSELECTOD.OrderID,SUM(CONVERT(money,(OD.UnitPrice*Quantity*(1-Discount)/100))*100)FROM[OrderDetails]ODGROUPBYOD.OrderIDGO创建视图(续)视图定义的限制仅当使用TOP关键字的时候,CREATEVIEW语句才能包括ORDERBY子句视图不能引用临时表视图不能引用超过1024列在单一批处理中,CREATEVIEW语句不能和其他Transact-SQL语句组合使用示例联接表的视图创建视图以提供一个方便地从两个或多个联接表中查看信息的方法OrderID1066310827104271045110515CustomerIDBONAP BONAP PICCO QUICKQUICK ~~~ ~~~ ~~~ ~~~ ~~~RequiredDate1997-09-241998-01-261997-02-241997-03-051997-05-07ShippedDate1997-10-031998-02-061997-03-031997-03-121997-05-23OrdersCustomersShipStatusViewUSENorthwindGOCREATEVIEWdbo.ShipStatusViewASSELECTOrderID,RequiredDate,ShippedDate,

ContactNameFROMCustomerscINNERJOINOrderso

ONc.CustomerID=O.CustomerIDWHERERequiredDate<ShippedDateCustomerIDBONAPPICCOQUICKCompanyNameBonapp'PiccoloundmehrQUICK-Stop ContactNameLaurenceLebihanGeorgPippsHorstKlossOrderID1026410271102801996-08-211996-08-291996-09-11 ShippedDate1996-08-231996-08-301996-09-12ContactNameLaurenceLebihanGeorgPippsHorstKloss随堂练习查询所有书籍的编号、书名、作者名查询所有书籍的书名、作者人数、出版商名、总销售量查看视图定义信息查找视图依赖:检索特定视图所依赖的表和视图以及依赖特定视图的对象企业管理器系统存储过程sp_depends:sp_depends对象名查看视图文本内容

sp_helptext视图名CREATEVIEWdbo.ViwOrderSubtotals(OrderID,Subtotal)

WITHENCRYPTION

ASSELECTOD.OrderID,SUM(CONVERT(money,(OD.UnitPrice*Quantity*(1-Discount)/100))*100)FROM[OrderDetails]ODGROUPBYOD.OrderIDGO创建视图(续)对视图文本内容进行加密使用该选项对视图内容进行加密更改和删除视图更改视图:可更改一个视图(包括索引视图)的定义,但不影响相关的存储过程或触发器,也不更改权限

使用新的SELECT语句和选项代替原来的定义保留分配的权限ALTERVIEWdbo.ViwOrderSubtotals

ASSELECTOD.OrderID,sum(quantity)astotal_quantityFROM[OrderDetails]ODGROUPBYOD.OrderIDGO更改和删除视图(续)删除视图:从数据库中删除视图的定义和所有分配给它的权限语法:DROPVIEW{视图名}[,...n]

DROPVIEW

dbo.ViwOrderSubtotals注意更改视图语句不影响分配的权限删除再重新创建视图的话则需要重新分配权限视图视图简介创建和修改视图通过视图修改数据使用视图优化性能通过视图修改数据对视图数据的修改实际上是对基表的修改一般来说,为了能通过视图修改数据,视图必须定义在单个表上,在SELECT语句中不能包括聚合函数或GROUPBY子句createviewAuthorViewasselecta.au_id,a.au_lname,au_fname,a.contractfromauthorsaGOINSERTINTOAuthorView(au_id,au_lname,au_fname,contract)VALUES('315-41-6425','lfm','lfm1',1)GO通过视图修改数据(续)明确地说,通过视图进行的修改不能影响超过一个的底层的表。可以修改从两个或更多表得到的视图,但是每次更新或修改只能影响一个表不能对某些列进行。不允许改变是某个计算的结果的列,例如包括计算值、内建函数或行聚合函数的列。若视图定义中指定了WITHCHECKOPTION选项,则修改被校验,以符合SELECT语句中指明的标准。通过视图修改数据(续)createviewwa_publishersasselect*frompublisherswherestate='WA'INSERTINTOwa_publishers(pub_id,pub_name,city,state,country)VALUES(9994,'Hziee','Atlanda','GI','USA')对数据有效性的维护

建立一个视图,功能是查询来自“WA”州的出版商的情况。目的:通过此视图,只能运行在“WA”州的出版商才可以插入数据。通过视图修改数据(续)INSERTINTOwa_publishers(pub_id,pub_name,city,state,country)VALUES(9994,'Hziee','Atlanda','GI','USA')对数据有效性的维护createviewwa_publishersasselect*frompublisherswherestate='WA'withcheckoption结果:通过此视图插入数据失败,实现了对数据有效性的维护。视图视图简介创建和修改视图通过视图修改数据使用视图优化性能使用视图优化性能性能考虑使用索引视图使用视图来分区数据性能考虑USENorthwindGOCREATEVIEWdbo.TopSalesViewASSELECT*FROMdbo.TotalPurchaseViewWHERESubtotal>50000GOTotalPurchaseView1~~~~2~~~~3~~~~4~~~~5~~~~6~~~~Customers1~

~

~n

2~

~

~n

3~

~

~y

4~

~

~y

5~

~

~n

6~

~

~y

Orders1~

~

~n

2~

~

~n

3~

~

~y

4~

~

~y

5~

~

~n

6~

~

~y

OrderDetails1~

~

~~

2~

~

~~

3~

~

~~

4~

~

~~

5~

~

~~

6~

~

~~

SELECT*FROMdbo.TopSalesWHERECompanyName='ErnstHandel'TopSalesView~~~~~~~~~当联接多个表并计算复杂的表达式的视图嵌套在其他视图中的时候,性能问题的来源可能会难以确定创建单独的视图定义,而不采用嵌套视图使用索引视图索引视图:结果集保留在数据库中并建立了索引以供快速访问的视图创建索引视图的利弊有利:由于结果集已经存储在数据库中,所以性能可以得到提升。不利:由于索引视图要占用磁盘空间,所以系统产生一定的开销。使用索引视图(续)下图说明了使用索引视图时一般能够提高多少性能。提供的查询复杂程度各不相同(例如,聚合计算的数量、所用表的数量或谓词数),并包括来自实际生产环境的数百万行的大表。使用索引视图(续)创建索引视图的限制视图上创建的第一个索引必须是惟一聚集索引,之后才可以在视图上创建其他索引创建视图时必须使用SCHEMABINDING选项视图可以引用基表,但不能引用其他视图索引视图使用场合对检索速度的要求高底层的数据很少更新查询进行了大量的联接和聚合操作,需要处理很多数据行或被很多用户频繁调用创建索引视图先创建视图CREATEVIEW[Indexed_View]WITHSCHEMABINDINGASSelectemployeeid,lastname+’-’+fristnameas[name]fromdbo.employeesGO再创建索引CREATEUNIQUECLUSTEREDINDEXCLU_Indexed_ViewONIndexed_View(EmployeeID)必须要写对象名必须由2部分组成使用视图来分区数据SQLServer如何使用视图来分区数据在一个视图内可以使用UNION集合操作将来自于不同表的两个或多个查询的结果合并成单个结果集,这对用户来说就像是一个表,称为分区视图分区视图可以基于多个异构数据源的数据,这样可以将数据库处理过程分布到一组服务器上分区视图如何改善性能分区视图内的表在不同服务器上,或在一台具有多个处理器的计算机上,可以并发扫描查询所涉及的每个表维护任务可以进行得更快,因为每个数据集较小使用视图来分区数据(续)表BB~~~~~~~~Server2CustomerA~~~~

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论