资源描述:
《SQLServer2005数据库简明教程电子教案配套课件 第7章 视图的操作与管理.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章视图的操作与管理视图概述视图是个虚表,是从一个或者多个表或视图中导出的表,其结构和数据是建立在对表的查询基础上的。使用视图的优点和作用主要有:(1)视图可以使用户只关心他感兴趣的某些特定数据和他们所负责的特定任务,而那些不需要的或者无用的数据则不在视图中显示。(2)视图大大地简化了用户对数据的操作。(3)视图可以让不同的用户以不同的方式看到不同或者相同的数据集。(4)在某些情况下,由于表中数据量太大,因此在表的设计时常将表进行水平或者垂直分割,但表的结构的变化对应用程序产生不良的影响。而使用视图可以重新组织数据,从而使外模式保持不变,
2、原有的应用程序仍可以通过视图来重载数据。(5)视图提供了一个简单而有效的安全机制。7.1创建视图SQLServer2005提供了如下几种创建视图的方法:(1)用SQLSERVER管理平台创建视图;(2)用Transact-SQL语句中的CREATEVIEW命令创建视图;(3)利用SQLSERVER管理平台的视图模板来创建视图。创建视图时应该注意以下情况:(1)只能在当前数据库中创建视图,在视图中最多只能引用1024列,视图中记录的数目限制只由其基表中的记录数决定。(2)如果视图引用的基表或者视图被删除,则该视图不能再被使用,直到创建新的基表
3、或者视图。(3)如果视图中某一列是函数、数学表达式、常量或者来自多个表的列名相同,则必须为列定义名称。(4)不能在视图上创建索引,不能在规则、默认、触发器的定义中引用视图。(5)当通过视图查询数据时,SQLServer要检查以确保语句中涉及的所有数据库对象存在,每个数据库对象在语句的上下文中有效,而且数据修改语句不能违反数据完整性规则。(6)视图的名称必须遵循标识符的规则,且对每个用户必须是惟一的。此外,该名称不得与该用户拥有的任何表的名称相同。7.1.1利用SQLSERVER管理平台创建视图利用SQLSERVER管理平台创建视图的具体操作
4、步骤如下:(1)在SQLSERVER管理平台中,展开指定的服务器,打开要创建视图的数据库文件夹,选择指定的数据库,右击该数据库图标,从弹出的快捷菜单中依次选择“新建(New)→视图”选项,如图7-1所示。接着就出现添加表、视图、函数对话框。如图7-2所示。图7-1选择新建视图选项对话框图7-2添加表、视图、函数对话框7.1.1利用SQLSERVER管理平台创建视图(2)选择好创建视图所需的表、视图、函数后,通过单击字段左边的复选框选择需要的字段,如图7-3所示。单击工具栏中的“保存”按钮,或者单击鼠标右键,从快捷菜单中选择保存选项保存视图,
5、输入视图名,即可完成视图的创建。图7-3选择视图字段对话框7.1.2利用Transact-SQL语句中的CREATEVIEW命令创建视图使用Transact-SQL语句中的CREATEVIEW创建视图,其语法形式如下:CREATEVIEW[schema_name.]view_name[(column[,...n])][WITH[,...n]]ASselect_statement[WITHCHECKOPTION]::={ENCRYPTION
6、SCHEMABINDING
7、V
8、IEW_METADATA}7.1.2利用Transact-SQL语句中的CREATEVIEW命令创建视图例7-1选择表s和sc中的部分字段和记录来创建一个视图,并且限制表s中的记录只能是计算机系的记录集合,视图定义为view_s。程序清单如下:createviewview_sasselects.name,s.age,s.sex,sc.cno,sc.scorefroms,scwheres.sno=sc.snoands.dept=’计算机’例7-2创建一个视图,使之包含复杂的查询。程序清单如下:CREATEVIEWExampleViewWITH
9、SCHEMABINDINGASSELECTsno,SUM(score)ASSumscore,COUNT(*)ASCountColFROMscGROUPBYsno7.1.2利用Transact-SQL语句中的CREATEVIEW命令创建视图例7-3创建一个视图,使之包含字符串的运算。程序清单如下:CREATEVIEWv_shyjl(shyxh,shj,xm,jglb,phr,bzh)ASSelectdistinctshyxh,substring(shj,1,10)+""+zhi,t01_shbshy.xm,t012_shyjl.jglb,t0
10、12_shyjl.phr,t012_shyjl.bzhfromt01_shbshy,t012_shyjlwheret012_shyjl.xm=t01_shbshy.xm其中shj