sql server 第六章

上传人:猪** 文档编号:243144774 上传时间:2024-09-16 格式:PPT 页数:68 大小:288.50KB
返回 下载 相关 举报
sql server 第六章_第1页
第1页 / 共68页
sql server 第六章_第2页
第2页 / 共68页
sql server 第六章_第3页
第3页 / 共68页
点击查看更多>>
资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,电脑基础,实例,上机系列丛书,SQL Server,数据库应用教程,清华大学出版社,第,6,章 视图及其应用,学习目标,本章要点,上机练习,习 题,学习目标,视图是一种逻辑表,定义视图后,可像表一样访问数据。通过,T-SQL,、企业管理器和向导都可以创建视图,视图的管理方面介绍了如何查看视图信息,修改和删除视图。视图提供了一定的数据库安全性,保护了表中对某用户保密的和不适合的数据,但是对于用户来说,仍然像操作表一样访问数据,可以用视图方式进行来获得一些复杂报表的数据,以方便其他应用程序的使用。,学习目标,本章定义了视图并阐述了其概念和特点,描述了创建视图的过程,讨论了如何对视图进行查看、修改及删除等管理操作。,本章要点,视图的概念,视图的创建,视图的维护,视图的概念,下面将讲解视图的基本概念和特点。,基本概念,视图的特点,基本概念,视图具有将预定义的查询作为对象存储在数据库中的能力,便于以后使用。在视图中查询的表称为基表。一般讲,可以将任何,SELECT,语句作为视图进行命名和存储。视图由,SELECT,语句构成的,其内容是通过选择查询来定义的。,基本概念,称它是虚拟表是因为它看起来像一个表,由行列组成,而且可以像表一样作为,SELECT,语句的数据来源来使用。但它所对应的数据并不实际存储在数据库中,数据库中只存储视图的定义,即视图是从哪个或哪些基表导出的,视图不生成所选数据库行和列的永久拷贝,其中的数据是在引用视图时动态生成的。,基本概念,当基表中的数据发生变化时,可以从视图中直接反映出来。当对视图执行更新操作时,其实操作的是基表中的数据。所以我们可以通过视图查看基表中的数据,也可以通过视图更改基表中的数据。,基本概念,视图的常见实例如下。,一个基表的行或列的子集。,两个或多个表的合并。,两个或多个表的联接。,一个基表的统计摘要。,另一个视图或视图和基表组合的子集。,基本概念,对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。分布式查询也可用于定义使用多个异类源数据的视图。,基本概念,如果有几台不同的服务器分别存储在不同地区的数据,而您需要将这些服务器上相似结构的数据组合起来,这种方式就很有用。通过视图进行查询没有任何限制,通过它们进行数据修改时的限制也很少。,两个表上建立的视图,视图的特点,视图的特点主要体现在如下,5,个方面。,为用户聚合数据,降低数据库设计复杂性,简化用户权限管理,改进性能,组织数据以便导出到其他应用程序,为用户聚合数据,视图允许用户访问指定的数据,而其他的数据对用户来说是不可见的,对用户只显示特定数据:不需要的、敏感的或不合适的数据不引入视图内。这样就只关注于重要的或适当的数据,限制对敏感数据的访问。,降低数据库设计复杂性,开发者可修改设计而不影响用户与数据库的交互。同时,提供给用户更好的界面,简化复杂的查询,包括对异构数据的分布式查询。用户直接查询视图,而不需要写查询语句或执行脚本。,简化用户权限管理,不必对用户赋予查询基表中特定列的权限,而只需要赋予用户查询视图的权限即可。,改进性能,视图允许存储复杂查询的结果,让其他查询直接使用。视图亦允许分区数据,可将单独的分区放置于分散的计算机内。,组织数据以便导出到其他应用程序,可基于联接两个或多个表的复杂查询创建视图,并将数据导出到其他应用程序以进行更深入的分析。,视图的创建,要在一个数据库中建立视图,必须具有创建视图的权限并对视图中要引用的基础表或视图具有适当的权限。此外,创建视图时还要注意以下几点。,只能在当前数据库中创建视图,尽管被引用的表或视图可以存在于其他的数据库内,甚至其他的数据库服务器内。,视图的创建,一个视图最多可以引用,1024,个列。,视图的命名必须符合,SQL Server,中的标识符的定义规则。对于每个用户所定义的视图名称必须惟一,而且不能与该用户的某个表同名。,视图的创建,可以将视图建立在其他视图或引用视图上,,SQL Server 2000,中允许最多,32,层的视图嵌套。,不能将规则、默认值绑定在视图上。,定义视图的查询语句中不能包括,ORDER BY,,,COMPUTE,,,COMPUTE BY,子句或,INTO,等关键字。,视图的创建,在默认状态下,视图中的列名继承了它们基表中的名称。对于以下情况,在创建视图时需要明确给出每一列的名称。,视图中的某些列来自表达式、函数或常量时。,当视图引用不同表的列有相同名称时。,视图的创建,希望视图中的列名与基表的列名的名称不同时。,在,SQL Server 2000,中,使用创建视图向导、企业管理器或,CREATE VIEW,语句都可以建立视图。,使用,CREATE VIEW,创建视图,使用企业管理器创建视图,使用,CREATE VIEW,创建视图,使用,CREATE VIEW,语句创建视图的语法格式为:,CREATE VIEW,视图名,(,视图列名,1,,视图列名,2,,,,视图列名,n),WITH ENCRYTION,AS,SELECT,语句,WITH CHECK OPTION,使用,CREATE VIEW,创建视图,在上述语法格式中,视图列名表示生成视图中的各列的名称,当该参数省略时,以基表中相应列的列名作为视图的别名。,WITH ENCRYPTION,子句表示,SQL Server,对包含,CREATE VIEW,语句的文本进行加密。,使用,CREATE VIEW,创建视图,视图的定义信息是存储在,syscomments,系统表中,如果使用该选项,则对,syscomments,中的视图定义加密,从而使视图的定义不被他人查看。,SELECT,语句可以使用不同数据库中的一个或多个表或其他视图。,使用,CREATE VIEW,创建视图,WITH CHECK OPTION,子句表示对视图执行的所有数据修改操作都必须遵守定义视图的,SELECT,语句中的,WHERE,子句所指定的条件。,【,例,6-1】,创建一个带,WITH CHECK OPTION,参数的视图,view1,,其内容是所有价格低于,20,元的书信息。(光盘:,源文件,第,6,章,例,6-1,),使用,CREATE VIEW,创建视图,上述语句的执行后,若向视图中插入一个价格大于,20,的记录,将显示不能插入错误信息。,执行查询后的结果,使用,CREATE VIEW,创建视图,【,例,6-2】,创建一个带,WITH ENCRYPTION,参数的视图,view2,,其内容是所有价格低于,50,元的货品信息。(光盘:,源文件,第,6,章,例,6-2,),上述语句的执行后,若执行“,sp_helptext,view2”,语句时,不能查看到,view2,的定义信息。,执行,sp_helptext,view2,后的结果,使用,CREATE VIEW,创建视图,【,例,6-3】,创建一个对,books,表中书的分类“类”列,按“书名”进行分组求和的视图,booksum,,视图由“书名”和“总数量”,2,列组成。(光盘:,源文件,第,6,章,例,6-3,),使用企业管理器创建视图,下面讲解如何在企业管理器中创建视图。,【,例,6-4】,下面以创建视图,view3,为例,讲解使用企业管理器创建视图的操作步骤。视图,view3,要求从,books,、,borrow,和,readers 3,个表中检索价格大于,30,的图书,以及借阅该书的读者姓名、借阅日期和价格信息。,执行查询的结果,视图的维护,在对视图进行维护之前,需要学会查看视图的定义信息。,查看视图的定义信息,修改视图,重命名视图,删除视图,查看视图的定义信息,建立视图以后,可以使用企业管理器查看视图的信息,也可以使用,sp_help,和,sp_helptext,命令查看视图信息。下面分别加以介绍。,查看视图的基本信息,查看视图的定义信息,查看视图与其他数据库对象之间的依赖关系,查看视图的基本信息,视图的基本信息主要是指视图的名称、拥有者、视图类型及创建时间等信息。用,sp_help,命令和企业管理器都可以查看视图的基本信息。,查看视图的基本信息,1,)使用,sp_helps,查看视图的基本信息,使用,sp_help,查看视图的基本信息的语法格式为:,EXECUTE sp_help,视图名,其中,视图名为要查看信息的视图名称。,执行查询的结果,查看视图的基本信息,2,)使用企业管理器查看视图的基本信息,下面讲解如何在企业管理器中查看视图的基本的信息。,【,例,6-5】,查看视图的基本信息。,查看视图的定义信息,在创建视图时,若定义语句中带有,WITH ENCRYPTION,子句,则表示,SQL Server,对包含,CREATE VIEW,语句的文本进行加密,使视图的定义不被他人查看,即使是视图拥有者和系统管理员也不能看到定义内容。若定义视图时省略了该子句,则可查看其定义信息。,查看视图的定义信息,1,)使用,sp_helptext,查看视图定义信息,使用,sp_helptext,查看视图定义信息的语法格式为:,EXECUTESP_HELPTEXT,视图名,输入并执行上述代码。,运行的结果,查看视图的定义信息,2,)使用企业管理器查看视图的定义信息,下面讲解如何在企业管理器中查看视图的定义信息。,【,例,6-6】,查看视图的定义信息。,查看视图与其他数据库对象之间的依赖关系,如果我们想知道视图中的数据来源于哪些数据对象,哪些数据对象引用了视图中的数据,则需要查看视图与其他数据对象之间的依赖关系。,查看视图与其他数据库对象之间的依赖关系,1,)使用,sp_depends,查看视图的依赖关系,使用,sp_depends,可以查看视图与其他数据库对象之间的依赖关系,语法格式如下:,EXECUTEsp_depends,视图名,查看视图与其他数据库对象之间的依赖关系,例如,要查看,booksum,视图与其他数据库对象之间的依赖关系,可使用以下代码:,sp_depends booksum,输入并执行上述语句。图中显示了视图所用的基表、表的类型、更新日期、所使用的列等信息。,显示视图的信息,查看视图与其他数据库对象之间的依赖关系,2,)使用企业管理器查看视图的依赖关系,下面讲解如何使用企业管理器查看视图的依赖关系。,【,例,6-7】,查看视图的依赖关系。,修改视图,对于一个已经存在的视图,既可以在企业管理器中进行修改,也可以用,ALTER VIEW,语句进行修改。,使用企业管理器修改视图,使用,ALTER VIEW,语句修改视图,使用企业管理器修改视图,下面讲解如何在企业管理器中修改视图。,【,例,6-8】,修改视图。,使用,ALTER VIEW,语句修改视图,除在企业管理器中使用视图设计器修改视图定义外,还可以使用,ALTER VIEW,语句修改已存在的视图,语法格式如下:,ALTER VIEW,视图名,WITH ENCRYPTION,AS,SELECT,语句,WITH CHECK OPTION,使用,ALTER VIEW,语句修改视图,其中,视图名用于要修改的视图,,WITH ENCRYPTION,子句用于对视图的定义进行加密处理,,SELECT,语句用于定义建立视图时所用的选择查询,,WITH CHECK OPTION,用于在通过视图插入或修改表数据时须满足,WHERE,子句所指定的选择条件。,使用,ALTER VIEW,语句修改视图,【,例,6-9】,在,library,示例数据库中建立一个名为,v-reader,的视图,然后用,ALTER VIEW,语句修改这个视图,在修改以后的视图中要求使用中文表示视图中的字段名并加上,WITH ENCRYPTION,子句和,WITH CHECK OPTION,子句。(光盘:,源文件,第,6,章,例,6-9,),重命名视图,重命名视图可以采用系统存储过程和在企业管理器中完成。,使用企业管理器修改视图的名称,用系统存储过程修改视图的名称,使用企业管理器修改视图的名称,下面讲解如何在企业管理器中修改视图名称。,【,例,6-10】,修改视图名称。,用系统存储过程修改视图的名称,使用系统存储过程可以修改视图的名称,语法如下:,sp_rename object_name=object_name,newname=new_name,用系统存储过程修改视图的名称,命令说明如下:,object_name,:表示数据库对象的原名称,如表示视图的旧名称。,new_name,:表示数据库对象的新名称,如表示视图的新名称。,用系统存储过程修改视图的名称,【,例,6-11】,将,【,例,6-6】,中建立的视图“,view3”,改名为“,newview”,(光盘:,源文件,第,6,章,例,6-11,)。,USE Library,GO,sp_rename view3,newview,删除视图,当不再需要时可以删除视图,删除视图不会影响基表中的数据。若在某视图上创建了其他数据库对象,则该视图仍然可以被删除掉,但是任何创建在该视图之上的数据库对象的操作将会发生错误。,删除视图,使用,DROP VIEW,语句删除视图,使用企业管理器删除视图,使用,DROP VIEW,语句删除视图,使用,DROP VIEW,语句删除视图的语法格式为:,DROP VIEW,视图名,n,使用该语句可以一次删除多个视图。,使用,DROP VIEW,语句删除视图,例如删除,library,数据库中的视图,view3,可用如下代码:,USE library,GO,DROP VIEW view3,使用企业管理器删除视图,下面讲解如何在企业管理器中删除视图。,【,例,6-12】,在企业管理器中删除视图。,上 机 练 习,本节上机练习将创建图书管理系统的相关视图。通过这个例子,掌握视图的创建、查看、修改和删除视图,以及使用视图对表数据进行操作(光盘:,源文件,第,6,章,上机练习)。,上 机 练 习,创建视图,查询视图,修改视图,删除视图,视图的加密、定制显示和使用函数,通过视图将数据插入到表,通过视图将数据插入到表,下面将对表,T1,直接插入数据以及通过视图,V1,向表插入数据。,习 题,在,Northwind,数据库中,首先建立视图,OrderSubtotalsView,,使用创建列,Subtotal,来显示订单的金额,该金额从,UnitPrice,、,Quantity,和,Discount,等列的数据计算得到。,.,创建视图,vwCustomerOrders,,视图中使用,SELECT,语句在以,Orders,表中的订单,ID,、,Customers,数据表中的公司名称(,CompanyName,)的和联系名称,(ContactName),,通过客户,ID,联接起来。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!