视图的规划与操作

上传人:M****1 文档编号:569821361 上传时间:2024-07-31 格式:PPT 页数:54 大小:533KB
返回 下载 相关 举报
视图的规划与操作_第1页
第1页 / 共54页
视图的规划与操作_第2页
第2页 / 共54页
视图的规划与操作_第3页
第3页 / 共54页
视图的规划与操作_第4页
第4页 / 共54页
视图的规划与操作_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《视图的规划与操作》由会员分享,可在线阅读,更多相关《视图的规划与操作(54页珍藏版)》请在金锄头文库上搜索。

1、优秀精品课件文档资料优秀精品课件文档资料汕腥骨当酞玄蕊弊核校常冉蛙放蛆参驻啡峻叼名脯硼玛霖坊瞄邻醒速哥乳视图的规划与操作视图的规划与操作SQL Server第第9 9章章 视图的规划与操作视图的规划与操作笨子邵负见努形熙非铸烷岸亲锐家涉舅扯洋殿亏盅箍锌侮领汹肮奸支傲蛛视图的规划与操作视图的规划与操作 视图是用户查看数据库内数据的一种方式,它相当于一个虚拟表,用户通过它来浏览表中感兴趣的部分或全部数据。使用视图可以将用户注意力聚焦在特定的数据上,并达到数据安全保护的目的,还能简化数据查询和处理操作。 第第9 9章章 视图的规划与操作视图的规划与操作疥温烙步涵阮邢坠位从搭甄令渊鸳肖直诽剖盏态培俺令

2、镶讳骨讼选兆牲看视图的规划与操作视图的规划与操作9.1视图的作用与规划视图的作用与规划9.2视图操作视图操作9.3视图应用综合实例分析视图应用综合实例分析贾逸家汤爵悬还投咯淮惟险冕日牧晴涂旧巾墓做韭卿缸衡赣瞬恋霞囤辕小视图的规划与操作视图的规划与操作9.1 视图的作用与规划视图是关系数据库系统提供给用户以多种角度观察数据视图是关系数据库系统提供给用户以多种角度观察数据库中数据的重要机制。库中数据的重要机制。视图对应于三级模式中的外模式(用户模式),它是从视图对应于三级模式中的外模式(用户模式),它是从一个或几个基本表导出的表,由一个或几个基本表导出的表,由CREATEVIEW命令创命令创建。建

3、。视图又称为虚拟表,因为数据库中存放着视图的定义及视图又称为虚拟表,因为数据库中存放着视图的定义及其关联的基本表名等信息,而不存放视图对应的数据。其关联的基本表名等信息,而不存放视图对应的数据。视图一经定义,就可以和基本表一样被查询、被删除,视图一经定义,就可以和基本表一样被查询、被删除,但对视图的更新(增加、删除、修改)操作则有一定的但对视图的更新(增加、删除、修改)操作则有一定的限制限制。户裹跃又疲鬼蜕珠茫豁单苍赢搔述绢德惨碌塌熊洲舟昧寂大尧腋扳宠曙赞视图的规划与操作视图的规划与操作9.1.1 视图的作用数据库使用视图机制主要有以下优点:数据库使用视图机制主要有以下优点:(1)视图能够简化

4、用户的操作)视图能够简化用户的操作视图机制使用户可以将注意力集中在所关心的数据上。视图机制使用户可以将注意力集中在所关心的数据上。(2)视图使用户能以多种角度看待同一数据)视图使用户能以多种角度看待同一数据视图机制能使不同岗位、不同职责、不同需求的用户视图机制能使不同岗位、不同职责、不同需求的用户按照自己的方式看待同一数据按照自己的方式看待同一数据(3)视图为数据库重构提供了一定程度的逻辑独)视图为数据库重构提供了一定程度的逻辑独立性。立性。(4)视图能够对机密数据提供安全保护)视图能够对机密数据提供安全保护对不同的用户定义不同的视图,使机密数据不出现在对不同的用户定义不同的视图,使机密数据不

5、出现在不应看到这些数据的用户视图上,这样视图机制就自不应看到这些数据的用户视图上,这样视图机制就自动提供了对机密数据的安全保护功能。动提供了对机密数据的安全保护功能。似四可脊玖孜城呛山凸贤脂渺砰调积叹滓宅拄绸叛傲敦稠绰摧掖琳幼砸瞪视图的规划与操作视图的规划与操作9.1.2 视图的规划在设计好数据库的全局逻辑结构后,还应该在设计好数据库的全局逻辑结构后,还应该根据局部应用的需求,结合根据局部应用的需求,结合DBMS的特点,设的特点,设计局部应用的数据库局部逻辑结构,即设计计局部应用的数据库局部逻辑结构,即设计更符合局部用户需要的用户视图。更符合局部用户需要的用户视图。定义数据库全局逻辑结构主要从

6、系统的时间定义数据库全局逻辑结构主要从系统的时间效率、空间效率、易维护等角度出发。效率、空间效率、易维护等角度出发。定义用户局部视图时可以注重考虑用户的习定义用户局部视图时可以注重考虑用户的习惯与方便。惯与方便。并翔昆揭金辐账钞渗示绪缨陵茨古滓酮隆迫顶秘惫满狐骆拯翼森典驾怔基视图的规划与操作视图的规划与操作9.1.2 视图的规划定义用户局部视图时可以主要考虑以下几个方面:定义用户局部视图时可以主要考虑以下几个方面:(1)使用更符合用户习惯的别名)使用更符合用户习惯的别名在设计数据库总体结构时,同一关系和属性具有唯一的名字,在设计数据库总体结构时,同一关系和属性具有唯一的名字,但是,在局部应用中

7、,对同一关系或属性,有自己更加习惯的但是,在局部应用中,对同一关系或属性,有自己更加习惯的名字。我们可以用视图机制在设计用户视图时重新定义某些属名字。我们可以用视图机制在设计用户视图时重新定义某些属性名,使其与用户习惯一致,以方便使用。性名,使其与用户习惯一致,以方便使用。(2)可以对不同级别的用户定义不同的视图,以保证系统的安)可以对不同级别的用户定义不同的视图,以保证系统的安全性。全性。(3)简化用户对系统的使用)简化用户对系统的使用如果某些局部应用中经常要使用某些很复杂的查询,为了方便如果某些局部应用中经常要使用某些很复杂的查询,为了方便用户,可以将这些复杂查询定义为视图,用户每次只对定

8、义好用户,可以将这些复杂查询定义为视图,用户每次只对定义好的视图进行查询,大大简化了用户的使用。的视图进行查询,大大简化了用户的使用。役佛蔼堑污汛盂认漠孕立索戮绎匆从绩鲤稳琢跺阜灼寡错惦标灭栈踞圭捶视图的规划与操作视图的规划与操作9.2 视图操作 9.2.1 9.2.1 创建视图创建视图SQLSERVER提供了使用提供了使用SSMS和和SQL命令两种方法来创建视图。命令两种方法来创建视图。在创建或使用视图时应该注意到以下情况:在创建或使用视图时应该注意到以下情况:只能在当前数据库中创建视图,在视图中最多只能引用只能在当前数据库中创建视图,在视图中最多只能引用1024列列;如果如果视图引用的表被

9、删除视图引用的表被删除,则当使用该视图时将返回一条错误信,则当使用该视图时将返回一条错误信息,如果创建具有相同的表的结构新表来替代已删除的表视图则息,如果创建具有相同的表的结构新表来替代已删除的表视图则可以使用,否则必须重新创建视图;可以使用,否则必须重新创建视图;如果视图中某一列是函数、数学表达式、常量或来自多个表的列如果视图中某一列是函数、数学表达式、常量或来自多个表的列名相同,则名相同,则必须为列定义名字必须为列定义名字;定义视图的查询语句不能包含定义视图的查询语句不能包含COMPUTE或或COMPUTEBY子句;子句;不能包含不能包含ORDERBY子句,除非在子句,除非在SELECT语

10、句的选择列表中也语句的选择列表中也有一个有一个TOP子句;不能包含子句;不能包含INTO关键字;不能引用临时表或表变关键字;不能引用临时表或表变量。量。不能在视图上创建全文索引、规则、默认值和不能在视图上创建全文索引、规则、默认值和after触发器;不能触发器;不能在规则、缺省、触发器的定义中引用视图;在规则、缺省、触发器的定义中引用视图;不能创建临时视图不能创建临时视图,也不能在临时表上建立视图。,也不能在临时表上建立视图。眉禹歌酮墩句刑咋沉袒坷挠钦酝奔灯赛歪娜悸菠赏灵碧骄囚鳖寻厦惯押彬视图的规划与操作视图的规划与操作1使用SQL SERVER企业管理器来创建视图在在SQLSERVER中使用

11、中使用SSMS来创建视图。来创建视图。步骤如下:步骤如下:启动启动SSMS,登录到指定的服务器;,登录到指定的服务器;打开要创建视图的数据库文件夹,选中打开要创建视图的数据库文件夹,选中视图视图图图标,此时在右面的窗格中显示当前数据库的所有标,此时在右面的窗格中显示当前数据库的所有视图,右击图标,在弹出菜单中选择视图,右击图标,在弹出菜单中选择新建视图新建视图选选项,打开项,打开新建视图新建视图对话框。在对话框。在新建视图新建视图对话框对话框中共有四个区:表区、列区中共有四个区:表区、列区SQLscript区、数据区、数据结果区,当然刚打开时是空白。结果区,当然刚打开时是空白。龙搭坦胚甭嘎踏错

12、乃靛朔娟底盈份撵卒蓖实通哮亦任络喝蹬悼冻强谁九门视图的规划与操作视图的规划与操作2Transact-SQL 命令创建视图使用使用Transact-SQL命令命令CREATEVIEW创建视创建视图。图。语法格式:语法格式:CREATE VIEW . . view_name ( column ,.n ) WITH ,.n AS select_statement WITH CHECK OPTION := ENCRYPTION | SCHEMABINDING | VIEW_METADATA 讶均佰到苔砧酷掇诞予铆蔬丘恿内唐撂殉葱蛙火栓厩恤顶暗缅逾毋景挽烯视图的规划与操作视图的规划与操作2Transac

13、t-SQL 命令创建视图参数说明:参数说明:(1)view_name:是视图的名称。视图名称必须符合标识是视图的名称。视图名称必须符合标识符规则。可以选择是否指定视图所有者名称。符规则。可以选择是否指定视图所有者名称。(2)Column:是视图中的列名。只有在下列情况下,才是视图中的列名。只有在下列情况下,才必须命名必须命名CREATEVIEW中的列:当列是从算术表达式、中的列:当列是从算术表达式、函数或常量派生的,两个或更多的列可能会具有相同的函数或常量派生的,两个或更多的列可能会具有相同的名称(通常是因为联接),视图中的某列被赋予了不同名称(通常是因为联接),视图中的某列被赋予了不同于派生

14、来源列的名称,以便符合用户习惯。还可以在于派生来源列的名称,以便符合用户习惯。还可以在SELECT语句中指派列名。如果未指定语句中指派列名。如果未指定column,则视图,则视图列与列与SELECT语句中的列具有相同的名称。语句中的列具有相同的名称。皆荐腰袍扛幂伦槐啊诽认愉飘疗地酝藏皖出辈呐迅垢贡啦靛染灭寿姐怒蚂视图的规划与操作视图的规划与操作2Transact-SQL 命令创建视图(3)AS:是视图要执行的操作。是视图要执行的操作。(4)select_statement:是定义视图的是定义视图的SELECT语句。该语语句。该语句可以使用多个表或其它视图。若要从创建视图的句可以使用多个表或其它

15、视图。若要从创建视图的SELECT子句所引用的对象中选择,必须具有适当的权限。子句所引用的对象中选择,必须具有适当的权限。视图不必是具体某个表的行和列的简单子集。可以视图不必是具体某个表的行和列的简单子集。可以用具有任意复杂性的用具有任意复杂性的SELECT子句,使用多个表或其它子句,使用多个表或其它视图来创建视图。视图来创建视图。在索引视图定义中,在索引视图定义中,SELECT语句必须是单个表的语句必须是单个表的语句或带有可选聚合的多表语句或带有可选聚合的多表JOIN。在在select_statement中可以使用函数。中可以使用函数。select_statement可使用多个由可使用多个由

16、UNION或或UNIONALL分分隔的隔的SELECT语句。语句。健邱淹超帧执兽每庸做帘溢歹断评拭寓佣逝靳储乌竞服储泄缎景讹矽蛔栖视图的规划与操作视图的规划与操作2Transact-SQL 命令创建视图(5)WITHCHECKOPTION:强制视图上执行的所有数据强制视图上执行的所有数据修改语句都必须符合由修改语句都必须符合由select_statement设置的准则。通设置的准则。通过视图修改行时,过视图修改行时,WITHCHECKOPTION可确保提交修改可确保提交修改后,仍可通过视图看到修改的数据。后,仍可通过视图看到修改的数据。(6)WITHENCRYPTION:表示表示SQLServ

17、er加密包含加密包含CREATEVIEW语句文本的系统表列。使用语句文本的系统表列。使用WITHENCRYPTION可防止将视图作为可防止将视图作为SQLServer复制的一部分复制的一部分发布。发布。(7)SCHEMABINDING:将视图绑定到架构上。将视图绑定到架构上。(8)VIEW_METADATA:指定为引用视图的查询请求浏览指定为引用视图的查询请求浏览模式的元数据时,模式的元数据时,SQLServer将向将向DBLIB、ODBC和和OLEDBAPI返回有关视图的元数据信息,而不是返回基表或表返回有关视图的元数据信息,而不是返回基表或表。矩晦胃市豫疑栏匡瘫坑呐盖叔筹善梢颅洪仔跪窘姜束

18、熙流脯涪贷倔祝讹友视图的规划与操作视图的规划与操作3视图创建实例【例【例9-1】使用简单的】使用简单的CREATEVIEW下例创建具有简单下例创建具有简单SELECT语句的视图。当需要频繁地查语句的视图。当需要频繁地查询列的某种组合时,简单视图非常有用。询列的某种组合时,简单视图非常有用。USE教学管理教学管理IFEXISTS(SELECTTABLE_NAMEFROMINFORMATION_SCHEMA.VIEWSWHERETABLE_NAME=courses_VIEW)DROPVIEWcourses_VIEWGOCREATEVIEWcourses_VIEWASSELECTcno,cname,

19、cbname,cedi,cpubFROMcourseGO坷趾棕巡招返搏捂植裤芬际奔阔诺桃理炭治皂常封阳愿锤昌帘津把光稿射视图的规划与操作视图的规划与操作【例【例9-2】使用使用WITHENCRYPTION下例使用下例使用WITHENCRYPTION选项和内置函数,使用函数时,选项和内置函数,使用函数时,必须为派生列指定列名。必须为派生列指定列名。USE教学管理教学管理CREATEVIEWstu_avg(sno,sname,AVG_SCORE)WITHENCRYPTIONASSELECTS.sno,sname,AVG(grade)FROMstudentS,enrollmentEWHERES.sn

20、o=E.snoGROUPBYS.sno,snameGOselectc.id,c.textfromsyscommentsc,sysobjectsowherec.id=o.idando.name=stu_avg修戏朗蜗蛔莎节犬慨缀朵掣灭际钩橇刻硬尺燕谜舔挪钠元绩吐譬圃握悼酣视图的规划与操作视图的规划与操作【例例9-3】使使用用WITHCHECKOPTION下下例例显显示示名名为为ISonly的的视视图图,该该视视图图使使得得只只能能对对信信息息学学院院的的学生做数据修改。学生做数据修改。USE教学管理教学管理CREATEVIEWISonlyASSELECTsno,sssn,sname,ssex,s

21、mtel,scity,smajor,sdepa,sgpaFROMstudentWHEREsdepa=信息学院信息学院WITHCHECKOPTIONGOinsertintoisonlyvalues(s060501,11111111,张张,男男,1111,宁波宁波,会计学会计学,会计学院会计学院,162)坠昔倘蹭豢匈暗碳锦怒友娶屿稍约暖价庸累讼必锨汽忱烟苟协诽淑昨涎小视图的规划与操作视图的规划与操作【例例9-4】如如果果如如本本章章第第一一节节概概述述所所述述,若若某某一一全全国国连连锁锁的的销销售售企企业业将将销销售售数数据据表表按按照照省省份份进进行行水水平平分分割割,那那我我们们可以使用以下

22、可以使用以下视图视图重新装重新装载载表的数据。表的数据。Createviewsales_tableAsSelect*fromsales_beijingunionSelect*fromsales_tianjinunionSelect*fromsales_shanghai限慌剿鱼梗臣统馒碳趟簿颈寥寝辱逃祥甚梳酌蒲伴滨吞户沸新仗棘主叶惩视图的规划与操作视图的规划与操作9.2.2 特殊类型视图简介 索引视图索引视图:建立唯一聚簇索引的视图为索引视图。:建立唯一聚簇索引的视图为索引视图。分分区区视视图图:分分区区视视图图是是通通过过对对具具有有相相同同结结构构的的成成员员表表使用使用UNION ALL

23、UNION ALL 所定义的视图。所定义的视图。信信息息架架构构视视图图:MicrosoftMicrosoft提提供供的的用用于于SQL SQL ServerServer元元数数据据的的内内部部视视图图,这这些些视视图图符符合合SQL-92SQL-92标标准准中中的的INFORMATION_SCHEMAINFORMATION_SCHEMA定义。定义。荚柠浦氦痪釉甲匆谁菊拼蜕驯窃通帕烈滦块凿邪肝缕靛浊逛乙垣些的奏嫉视图的规划与操作视图的规划与操作1索引视图 由由于于视视图图返返回回的的结结果果集集与与具具有有行行列列结结构构的的表表有有着着相相同同的的表表格格形形式式,并并且且我我们们可可以以在

24、在SQL SQL 语语句句中中像像引引用用表表那那样样引引用用视视图图,所所以以我我们们常常把把视视图称为图称为虚表虚表。标标准准视视图图的的数数据据的的物物理理存存放放依依然然是是在在数数据据库库的的基基本本表表中中,只只是是在在执执行行引引用用了了视视图图的的查查询询时时,SQL SQL Server Server 才才把把相相关关的的基基本本表表中中的的数数据据合合并并成成视视图图的的逻逻辑辑结结构构。所所以以,这这类类视视图图也也称称做做存存储储查询查询。嫌搓帝调皋推锥稚彬萍秧闽攘思梢酮隐跳幻悄豢贸涎粗粹将盯葵背蛾责烩视图的规划与操作视图的规划与操作问题:问题:由于是在执行了引用了视图

25、的查询时,由于是在执行了引用了视图的查询时,SQL SQL Server Server 才把相关的基本表中的数据合并成视图的才把相关的基本表中的数据合并成视图的逻辑结构,那么当查询所引用的视图包含大量的逻辑结构,那么当查询所引用的视图包含大量的数据行或涉及到对大量数据行进行合计运算或连数据行或涉及到对大量数据行进行合计运算或连接操作,毋庸置疑,接操作,毋庸置疑,动态地创建视图结果集将给动态地创建视图结果集将给系统带来沉重的负担,尤其是经常引用这种大容系统带来沉重的负担,尤其是经常引用这种大容量视图。量视图。如何解决?如何解决?暂毗扭颠罕孜技氮宫辐钝震如营讽率膘寒撰暴凄妖榜社钵齐事慕提筷钉滤视图

26、的规划与操作视图的规划与操作索引视图:索引视图:建立唯一聚簇索引的视图称做索引视图建立唯一聚簇索引的视图称做索引视图 在视图上创建索引可存储创建索引时存在的数据。在视图上创建索引可存储创建索引时存在的数据。优优点点:查查询询优优化化器器开开始始在在查查询询中中使使用用视视图图索索引引,而而不不是是直直接接在在FROMFROM子子句句中中命命名名视视图图。这这样样一一来来,可可从从索索引引视视图图检检索索数数据据而而无无需需重重新新编编码码,由由此此带带来来的的高高效效率率也也使现有查询获益。使现有查询获益。缺缺点点:它它降降低低了了对视图基基表表数数据据的的修修改改操操作作的的速速度度,且且维

27、护索引索引视图比比维护基基础表的索引更表的索引更为复复杂。适适合合情情况况:非非常常频频繁繁地地检检索索视视图图数数据据,或或很很少少修修改改基基表数据时。表数据时。淘醚饼传畅鞠销谚喘杯哼吾畸两凸找概惶楷台质特祝喷亿盛傲伐想功祈款视图的规划与操作视图的规划与操作在视图上创建聚集索引之前,该视图必须满足下列要求:在视图上创建聚集索引之前,该视图必须满足下列要求: 1.1.当当 执 行行 CREATE CREATE VIEWVIEW语 句句 时 , ANSI_NULLSANSI_NULLS和和QUOTED_IDENTIFIERQUOTED_IDENTIFIER选项必必须设置置为ONON。2.2.为

28、执行行所所有有CREATE CREATE TABLETABLE语句句以以创建建视图引引用用的的表,表,ANSI_NULLS ANSI_NULLS 选项必必须设置置为ONON。3.该该视视图图所所引引用用的的对对象象仅仅包包括括基基础础表表而而不不包包括括其其它的视图;它的视图;4 4.视视图图引引用用的的所所有有基基表表必必须须与与视视图图位位于于同同一一个个数数据库中,并且所有者也与视图相同。据库中,并且所有者也与视图相同。叼荒四魁历讽詹谈菱连趋尿范素舆女掺镰彤餐贯去赌簇楚锐靖苟饺匪穗寸视图的规划与操作视图的规划与操作5.5.必须使用必须使用SCHEMABINDINGSCHEMABINDIN

29、G选项创建视图。选项创建视图。SCHEMABINDINGSCHEMABINDING将视图绑定到基础基表的架将视图绑定到基础基表的架构。构。6.6.如果视图引用了用户自定义函数,那么在创如果视图引用了用户自定义函数,那么在创建这些用户自定义函数时也必须使用建这些用户自定义函数时也必须使用SCHEMABINDINGSCHEMABINDING选项选项 ; 7.7.视图必须以视图必须以owner.objectnameowner.objectname的形式来使用的形式来使用所引用的表或用户自定义函数;所引用的表或用户自定义函数;8.8.视图中的表达式所引用的所有函数必须是确视图中的表达式所引用的所有函数

30、必须是确定性的。定性的。沥桅椭募牲遇继祟穿皿边享实锌众纤乞拳趣岩每古纠则搪劫欢惕葫烙伪舰视图的规划与操作视图的规划与操作9.9.视图中的视图中的SELECTSELECT语句不能包含下列语句不能包含下列T-SQLT-SQL语法元素语法元素* *选择列表不能使用选择列表不能使用* *或或table_name.*table_name.*语法指定列。必须语法指定列。必须 显式给出列名。显式给出列名。*不能在多个视图列中指定用作简单表达式的表的列名。不能在多个视图列中指定用作简单表达式的表的列名。* * 派生表。派生表。* * 行集函数。行集函数。* UNION * UNION 运算符。运算符。* *

31、子查询。子查询。* * 外联接或自联接。外联接或自联接。* TOP * TOP 子句。子句。* ORDER BY * ORDER BY 子句。子句。* DISTINCT * DISTINCT 关键字。关键字。* COUNT(*)* COUNT(*)(允许(允许COUNT_BIG(*)COUNT_BIG(*)。)。)* AVG* AVG、MAXMAX、MINMIN、STDEVSTDEV、STDEVPSTDEVP、VARVAR或或VARPVARP聚合函数。聚合函数。 飞剿阎辅狐夸僚量践荣徊读恶亦山尉壮给咨隘陡骄妖简茅诡清汀积积艘蛮视图的规划与操作视图的规划与操作注意:注意:通常而言,可以在视图上创

32、建多个索引,但是应该记住,在视图上所创建的第一个索引必须是聚簇索引,然后才可以创建其它的非聚簇索引。抚潭费拣运拢扬谋拧酚躇秃鲁盛钉萝星撮酣她文蝇讳妒矛玲仅液绞锡医唆视图的规划与操作视图的规划与操作如如果果准准备备为为视视图图创创建建索索引引,在在执执行行CREATEINDEX命命令以前,您必须确保以下条件令以前,您必须确保以下条件:*CREATEINDEX命令的执行者必须是视图的所有者;命令的执行者必须是视图的所有者;* 在执行创建索引命令期间,在执行创建索引命令期间, ANSI_NULLS、ANSI_PADDING、ANSI_WARNINGS、ARITHABORT、 CONCAT_NULL_

33、YIELDS_NULL、QUOTED_IDENTIFIERS诸诸选选项项应应被被设设置置成成ON状状态;态;*NUMERIC_ROUNDABORT选项被设置为选项被设置为OFF状态;状态;*视图不能包括视图不能包括text、ntext、image类型的数据列;类型的数据列;*如如果果视视图图定定义义中中的的SELECT语语句句指指定定了了一一个个GROUPBY子子句句,则则唯唯一一聚聚集集索索引引的的键键只只能能引引用用在在GROUPBY子子句句中中指指定的列。定的列。钻干玩蕴汲吴壁足钡钮氰霍硼令尖堤挞邓缅替更井蛋镐垄蛰诬欢趴郁绩帝视图的规划与操作视图的规划与操作2 2分区视图分区视图 分区视

34、图在一个或多个服务器间水平连接一分区视图在一个或多个服务器间水平连接一组成员表中的分区数据,使数据看起来就象来自组成员表中的分区数据,使数据看起来就象来自一个表。一个表。MicrosoftSQLServer区分本地分区视图区分本地分区视图和分布式分区视图。和分布式分区视图。在本地分区视图中,所有的参与表和视图驻留在在本地分区视图中,所有的参与表和视图驻留在同一个同一个SQLServer实例上。实例上。在分布式分区视图中,至少有一个参与表驻留在在分布式分区视图中,至少有一个参与表驻留在不同的(远程)服务器上。此外,不同的(远程)服务器上。此外,SQLServer还区分可更新的分区视图和作为基础表

35、只读复本还区分可更新的分区视图和作为基础表只读复本的视图。的视图。簿祝糜航碾眼慨湍儒窘挝栓王园秧廉宴筹冻滚屋迭线雅茄鹤甜易洒回权骡视图的规划与操作视图的规划与操作在实现分区视图之前,在实现分区视图之前,必须先水平分割表必须先水平分割表。原始表被分成若干个较小的成员表。每个成员原始表被分成若干个较小的成员表。每个成员表包含与原始表相同数量的列,并且每一列具表包含与原始表相同数量的列,并且每一列具有与原始表中的相应列同样的特性(如数据类有与原始表中的相应列同样的特性(如数据类型、大小、排序规则)。型、大小、排序规则)。 成员表设计好后,每个表基于键值的范围成员表设计好后,每个表基于键值的范围存储原

36、始表的一块水平区域。键值范围基于分存储原始表的一块水平区域。键值范围基于分区列中的数据值。区列中的数据值。锯陷谗溉锰努句户惨强膨窿酉父榆秽妒泉映竭捡撤兼滚啥末卯断弘椭铁鸟视图的规划与操作视图的规划与操作例例如如,正正在在将将一一个个顾顾客客信信息息 Customer Customer 表表分分区区成成三三个表。这些表的个表。这些表的 CHECK CHECK 约束为:约束为:-OnServer1:CREATETABLECustomer_33(CustomerIDINTPRIMARYKEYCHECK(CustomerIDBETWEEN1AND32999),.-Additionalcolumndef

37、initions)否征潮夫拂搬铣睡壕冗床罚滑穴妈置降彩暇刑鞭又堤抬簇寂今妄树牲将郎视图的规划与操作视图的规划与操作-OnServer2:CREATETABLECustomer_66(CustomerIDINTPRIMARYKEYCHECK (CustomerID BETWEEN33000AND65999),.-Additionalcolumndefinitions)-OnServer3:CREATETABLECustomer_99(CustomerIDINTPRIMARYKEYCHECK (CustomerID BETWEEN66000AND99999),.-Additionalcolumnd

38、efinitions)周局捣菌寞人悔禹篱竹轮蔽篓悟祟殆固刃串镇沽颖辜甩表普嫡酌闰触孪秽视图的规划与操作视图的规划与操作生成分布式分区视图的方式生成分布式分区视图的方式 在在每每一一个个含含有有在在其其它它成成员员服服务务器器上上执执行行分分布布式式查查询询所所需需连连接接信信息息的的成成员员服服务务器器上上添添加加链链接接服服务务器器定定义义。这这将将使使得得分分布布式式分分区区视视图图能能够够访访问问其其它它服服务务器上的数据。器上的数据。贬割茁坦血色笋罕裤序赫相枚痈濒挎驳翟豺策唇踏镇嚏萨疏是劳佑介盟跟视图的规划与操作视图的规划与操作建以下分布式分区视图:建以下分布式分区视图: CREATE

39、VIEWCustomersASSELECT*FROMCompanyDatabase.TableOwner.Customers_33UNIONALLSELECT*FROMServer2.CompanyDatabase.TableOwner.Customers_66UNIONALLSELECT*FROMServer3.CompanyDatabase.TableOwner.Customers_99挑碧蹄逞莎旺谚哇漠色篙策朽视偶愤抽饯逊宾询囱仕涩箱箍蝎挺心剩闭桌视图的规划与操作视图的规划与操作3信息架构视图 信信息息架架构构视视图图基基于于SQL-92SQL-92标标准准中中针针对对架架构构视视图图的

40、的定定义义,这这些些视视图图独独立立于于系系统统表表,提提供供了了关于关于SQL ServerSQL Server元数据的内部视图。元数据的内部视图。信信息息架架构构视视图图的的最最大大优优点点是是,即即使使我我们们对对系系统统表表进进行行了了重重要要的的修修改改,应应用用程程序序也也可可以以正正常常地地使使用用这这些些视视图图进进行行访访问问。因因此此对对于于应应用用程程序序来来说说,只只要要是是符符合合SQL-92SQL-92标标准准的的数数据据库库系系统统,使用信息架构视图总是可以正常工作的。使用信息架构视图总是可以正常工作的。蜘咬零匣村户耪桌灿挽豺腰焙柑洽夜惰谱钦栓整供羞殴拷孜胁哗辊卑

41、每栓视图的规划与操作视图的规划与操作表9-2 常用的信息架构视图(部分)信息架构视图信息架构视图描描 述述CHECK_CONSTRAINTS返返回回有有关关列列或或过过程程参参数数的的信信息息,如如是是否否允允许许空值,是否为计算列等。空值,是否为计算列等。COLUMN_DOMAIN_USAGE当当前前数数据据库库中中每每个个带带有有用用户户定定义义数数据据类类型型的的列列在在该该视视图图中中占占一一行行。该该信信息息架架构构视视图图返返回回当前用户对其拥有权限的对象的有关信息。当前用户对其拥有权限的对象的有关信息。COLUMN_PRIVILEGES每每一一个个带带有有特特权权的的列列在在该该

42、视视图图中中占占一一行行,这这个个特特权权是是由由当当前前数数据据库库中中的的当当前前用用户户授授予予的的,或或者者授授予予了了当当前前数数据据库库中中的的当当前前用用户户。该该信信息息架架构构视视图图返返回回当当前用户对拥有特权的列的相关信息。前用户对拥有特权的列的相关信息。COLUMNS返返回回当当前前数数据据库库中中当当前前用用户户可可以以访访问问的的所所有有列列及及其其基本信息。基本信息。遥蚤灼蜗堰药社赌望臣甭聋绿结乓勤划轨丸胡盼石酱孪无姥古毙弃加畅挚视图的规划与操作视图的规划与操作在访问信息架构视图时,必须同时说明视图所属在访问信息架构视图时,必须同时说明视图所属模式,即采用以下语法

43、格式:模式,即采用以下语法格式:INFORMATION_SCHEMA.view_name例如,我们要得到某个表有多少列,可以使用以例如,我们要得到某个表有多少列,可以使用以下语句:下语句:SELECTCOUNT(*)FROMINFORMATION_SCHEMA.COLUMNSWHERETABLE_NAME=mytable哺邢牧升爽握私筛梆阵川爵翠轨洛沂牧厂葵制笆鞋赏泻讥姆订庚喻快达劈视图的规划与操作视图的规划与操作9.2.3 9.2.3 视图的修改、重命名和删除视图的修改、重命名和删除 1修改视图修改视图 修改一个先前创建的视图的定义,使用修改一个先前创建的视图的定义,使用ALTERVIEW语

44、句。语句。ALTERVIEW语句不影语句不影响相关的存储过程或触发器,也不更改权限。响相关的存储过程或触发器,也不更改权限。嚎绷钢谣右疫焊很扎闷杠簧旦吠前徊责医镣叉吠聚乖洼舒园江污壁脯磕落视图的规划与操作视图的规划与操作语法格式:语法格式:ALTER VIEW . .view_name(column,.n)WITH,.nASselect_statementWITHCHECKOPTION:=ENCRYPTION |SCHEMABINDING|VIEW_METADATA参数说明:参数说明:如如果果原原来来的的视视图图定定义义是是用用WITH WITH ENCRYPTIONENCRYPTION或或C

45、HECK CHECK OPTIONOPTION创创建建的的,那那么只有在么只有在ALTER VIEWALTER VIEW中也包含这些选项时,这些选项才有效。中也包含这些选项时,这些选项才有效。如如果果使使用用ALTER ALTER VIEWVIEW更更改改当当前前正正在在使使用用的的视视图图,SQL SQL ServerServer将将在在该该视视图图上上放放一一个个排排它它架架构构锁锁。当当锁锁已已授授予予,并并且且该该视视图图没没有有活活动动用用户户时时,SQL SQL Server Server 将将从从过过程程缓缓存存中中删删除除该该视视图图的的所所有有复复本本。引引用用该该视视图图的

46、的现现有有计计划将继续保留在缓存中,但当唤醒调用时将重新编译。划将继续保留在缓存中,但当唤醒调用时将重新编译。ALTER ALTER VIEWVIEW可可应应用用于于索索引引视视图图。然然而而,ALTER ALTER VIEWVIEW将将无无条条件件地地除除去去视视图图上的所有索引。上的所有索引。亨颓葵干予稿哼钢驹叙韩殃撤喉郭巾拜驹锌恒磐鹤预灸擂物欺颅邀江伺符视图的规划与操作视图的规划与操作【例【例9-59-5】更改视图】更改视图下下例例创创建建称称为为All_teachersAll_teachers的的视视图图,该该视视图图包包含含全全部部的的教教师师,并并将将该该视视图图的的查查询询权权授

47、授予予所所有有用用户户。但但是是由由于于该该视视图图中中包包含含了了教教师师的的编编号号、身身份份证证号号等等个个人人信信息息,需需使使用用ALTER ALTER VIEWVIEW替替换换该该视视图图,不不包包括括编编号号、身身份份证证号号等等个个人人信信息,以保护教师个人隐私。息,以保护教师个人隐私。琅疼晦违猾茧压谣芋蕾沸号贩甜撰爱痪队煎崇愉扑歼蛔椿鬼渍硝悼昆狰脖视图的规划与操作视图的规划与操作-CREATEaVIEWFROMtheteacertablethatcontainsallteachers.CREATEVIEWAll_teacher(tno,tssn,tname,tmtel,tci

48、ty,tdepa,trank)ASSELECTtno,tssn,tname,tmtel,tcity,tdepa,trankFROM教学管理教学管理.teacherGO- Grant SELECTpermissionson the VIEW topublic.GRANTSELECTONAll_teacherTOpublicGO嘲囊晨贪限烫蛛秤窄弯页垛藕馈讥喧誓井惰藐屁袄揖绽刽搭防货办钻凿益视图的规划与操作视图的规划与操作-TheVIEWneedstobechangedtoexcludethetno,tssn,tcityattributeofallteachersALTERVIEWAll_teac

49、her(tname,tmtel,tdepa,trank)ASSELECTtname,tmtel,tdepa,trankFROM教学管理教学管理.teacherGO谚凶柳勘甥峨俄训涧稳正慰乘德芜绎富毛拿泳镍返沸统珠灭质向姿谬希傈视图的规划与操作视图的规划与操作2 2视图重命名视图重命名 使用系统存储过程使用系统存储过程sp_rename对已创建的视图进行重命名。对已创建的视图进行重命名。语法格式:语法格式:sp_renameobjname=object_name,newname=new_name,objtype=object_type【例【例9-6】将例】将例9-5中称为中称为All_teach

50、er的视图重命名。的视图重命名。 语法格式:语法格式: exec sp_rename All_teacher,All_teacher_view纯囚间帖匪寓性底网傀发娱密搐姻耐牡瘩燥痈惨市抨彩仅厚汕熄领泪冗澈视图的规划与操作视图的规划与操作3 3删除视图删除视图 从从当当前前数数据据库库中中删删除除一一个个或或多多个个视视图图。可可执执行行DROPVIEW语语句。句。语法格式:语法格式:DROPVIEWView_name,.n【例【例9-79-7】下例删除】下例删除stu_avgstu_avg视图。视图。USE教学管理教学管理IFEXISTS(SELECTTABLE_NAMEFROMINFORM

51、ATION_SCHEMA.VIEWSWHERETABLE_NAME=stu_avg)DROPVIEWstu_avgGO丈秘粱属箔蛰久广凄铁兽勋坤垃脸善疗签煌挨好醒茂抬沏带汁群扰杜矣埋视图的规划与操作视图的规划与操作9.2.4 9.2.4 查询视图查询视图 视视图图定定义义后后,用用户户就就可可以以象象对对基基本本表表一一样样对对视视图进行查询了。图进行查询了。【例例9-89-8】如如果果要要查查询询信信息息学学院院每每个个学学生生的的情情况,只要从视图况,只要从视图ISonlyISonly查询即可。查询即可。Select*FromISonly糜耕席廓蔬碳铱珊剂棋充两辖悯架躲赠柄砧呵虎患辆阑熙惭

52、揍祥出废室希视图的规划与操作视图的规划与操作【例例9-99-9】创创建建信信息息学学院院每每个个学学生生的的成成绩绩视视图图,包包括括学学生生的的学学号号、姓名、所选课程号、课程名,成绩,并进行查询。姓名、所选课程号、课程名,成绩,并进行查询。USE教学管理教学管理IFEXISTS(SELECTTABLE_NAMEFROMINFORMATION_SCHEMA.VIEWSWHERETABLE_NAME=ISstu_score)DROPVIEWISstu_scoreGOCREATEVIEWISstu_score(sno,sname,cno,cname,grade)ASSELECTS.sno,sna

53、me,C.cno,cname,gradeFROMstudentS,enrollmentE,offeringO,courseCWHERES.sno=E.snoANDE.ono=O.onoANDO.cno=C.cnoANDsdepa=信息学院信息学院GO摸况会秸朝力廉彝拥登妻筒陡窑顷丸构鲜招专蒲令哄靳便仁磕嘛撼违鸭旨视图的规划与操作视图的规划与操作9.2.5 9.2.5 更新视图更新视图 更新视图是指通过视图来插入(更新视图是指通过视图来插入(INSERT)、删除)、删除(DELETE)和修改()和修改(UPDATE)数据。由于视图是不实)数据。由于视图是不实际存储数据的虚表,因此对视图的更新,最

54、终要转换为对际存储数据的虚表,因此对视图的更新,最终要转换为对基本表的更新。基本表的更新。Microsoft SQL Server 以两种方法增强可更新视图的类别:以两种方法增强可更新视图的类别: uINSTEAD OF触发器触发器 u分区视图分区视图 泪驯旧排功靴个陨增绑方抉销舵网汉女镭盈琴兜咐湃嚷豢戴华椽键科弘山视图的规划与操作视图的规划与操作【例例9-109-10】在在例例9-39-3中中,ISonlyISonly是是一一可可更更新新视视图图,但但由由于于视视图图使使用用了了with with CHECK CHECK OPTIONOPTION选选项项,只只允允许许更更新新信信息息学学院院

55、学学生生数数据据。下下面面例例子子说说明明,如如果果没没有有with with CHECK CHECK OPTIONOPTION选选项项,则则不不能能保保护护非非视视图图数数据据库库被被插插入入、修修改改和和删除。删除。-首先,创建首先,创建会计学院会计学院学生视图,不带学生视图,不带with CHECK OPTION选项选项 -再用再用INSERT语句通过语句通过ACConly视图插入一工商管理视图插入一工商管理学院的学生学院的学生 -然后输入前面不能通过然后输入前面不能通过ISonlyISonly视图插入的学生元组。视图插入的学生元组。 兄魔每盆计铁搐侥筋律欣兹本壶纬侥酋披栽寅下若堪坠伞采

56、酱猛铅辈糙撰视图的规划与操作视图的规划与操作 通通过过视视图图对对数数据据进进行行更更新新与与删删除除时时需需要要注注意意到到以下几个问题:以下几个问题:(1 1)不不带带with with CHECK CHECK OPTIONOPTION选选项项的的视视图图,能能够够插插入入非非视视图图数数据据,因因为为数数据据最最终终存存储储在在视视图图所所引引用用的的基基本本表表,但但插插入入后后,不不在在视视图图数数据据集集,故故无无法通过视图查询该数据;法通过视图查询该数据;(2 2)执执行行UPDATE UPDATE DELETEDELETE时时,所所删删除除与与更更新新的的数数据据,必必须须包包

57、含含在在视视图图结结果果集集中中,否否则则失失败败,例例子子中中通通过过ACConlyACConly视视图图对对S060601S060601学学生生数数据据的的修修改改和删除操作均失败;和删除操作均失败;(3 3)如如果果视视图图引引用用多多个个表表时时,无无法法用用DELETE DELETE 命命令令删删除除数数据据,若若使使用用UPDATEUPDATE则则应应与与INSERTINSERT操操作作一一样,被更新的列必须属于同一个表。样,被更新的列必须属于同一个表。部敬拿玛中伤酮彬件昏钓材捆筐泥颖疚学想魏呕骂疲屯鞍姚挤桩湖纤鬃杭视图的规划与操作视图的规划与操作9.3 9.3 视图应用综合实例分

58、析视图应用综合实例分析 【例【例9-129-12】一般学生信息视图(视图】一般学生信息视图(视图1 1)由于学生的一些个人私密信息如:身份证号、出生日期、家庭地由于学生的一些个人私密信息如:身份证号、出生日期、家庭地址、家庭电话等信息是不能随便透露的,为保证学生信息安全,址、家庭电话等信息是不能随便透露的,为保证学生信息安全,于是为一般用户创建一般学生信息视图如下:于是为一般用户创建一般学生信息视图如下:USE教学管理教学管理IFEXISTS(SELECTTABLE_NAMEFROMINFORMATION_SCHEMA.VIEWSWHERETABLE_NAME=G_Stu_VIEW)DROPV

59、IEWG_Stu_VIEWGOCREATE VIEW G_Stu_VIEW (sno, sname, ssex,scity,sdepa,smajor)ASSELECTsno,sname,ssex,scity,sdepa,smajorFROMstudentGO忍掣狐骋涪格炼心减蚜酗椰冕徐捉圾氨釜招袱忱呀碑踏非旦哮瞄赛呜逗捧视图的规划与操作视图的规划与操作【例【例9-139-13】教师基本信息视图(视图】教师基本信息视图(视图2 2)USE教学管理教学管理IFEXISTS(SELECTTABLE_NAMEFROMINFORMATION_SCHEMA.VIEWSWHERETABLE_NAME=G_T

60、_VIEW)DROPVIEWG_T_VIEWGOCREATE VIEW G_T_VIEW (tno, tname, tsex,tdepa,tmajor,trank,tdegree)ASSELECT tno, tname, tsex, tdepa, tmajor,trank,tdegreeFROMteacerGO突压扳领穗和籽沉骤茸恫定耸铭挖翌轩歧凰拔至魁刷夕忧惹戍驼甸谱赶波视图的规划与操作视图的规划与操作【例【例9-149-14】教师及授课信息视图(视图】教师及授课信息视图(视图3 3)同同样样的的道道理理,为为用用户户创创建建教教师师及及授授课课信信息息查查询询视视图图包括教师主讲课程以及开

61、课学期等。包括教师主讲课程以及开课学期等。USE教学管理教学管理CREATE VIEW G_TC_VIEW (tno, tname, tsex,tdepa,tmajor,trank,tdegree,cname,odate,oterm,otime,otamou,olaca)ASSELECT T.tno, tname, tsex, tdepa, tmajor,trank,tdegree,cname,odate,oterm,otime,otamou,olacaFROMteacerT,offeringO,courseCWHERET.tno=O.tnoANDO.cno=C.cnoGO陨师卓惨铜阮习苦噬怖

62、资恶涪妊邮煌痪哺藉秤僵恃仅嘻爵蚤冷乘红邀驮杉视图的规划与操作视图的规划与操作【例例9-159-15】根根据据教教学学管管理理部部门门对对学学生生选选课课管管理理的的需需要要,建建立立关于学生选课信息的视图(视图关于学生选课信息的视图(视图4 4)USE教学管理教学管理CREATE VIEW G_SC_VIEW (sno, sname, scometime,sdepa, smajor, sgpa, cno, cname, grade, odate,oterm,otime,otamou,olaca)ASSELECT S.sno, sname, scometime, sdepa, smajor,sg

63、pa, C.cno, cname,grade, odate, oterm, otime,otamou,olacaFROMstudentT,enrollmentE,offeringO,courseCWHERES.sno=E.snoANDE.ono=O.onoANDO.cno=C.cnoGO耶磐疮进接遵限偶惯叠男舱官籽迎徐撩时炯业掐吏捅寿涸抬擂瘟除剐峨驳视图的规划与操作视图的规划与操作【例例9-169-16】在在G_SC_viewG_SC_view视视图图的的基基础础上上,创创建建学学生生综综合合成成绩绩视图(视图视图(视图5 5)USE教学管理教学管理CREATEVIEWS_SCORE_VIEW(sno,sname,MIN_SCORE,MAX_SCORE,AVG_SCRORE)ASSELECT sno, sname, MIN(grade), MAX(grade),AVG(grade)FROMG_SC_VIEWGROUP BY sno,sname, scometime, sdepa,smajor,sgpaGO筒律奥怔绪烈嘲靴张嚎梨筷墙撑擦查沾对潭撒辱何父葫冻崎腻旋厢砚辉蕴视图的规划与操作视图的规划与操作疫求坠姐下剔闽坡碑柜霞旱辣危丽骚异日誓阵茵桩爱捏赐森讥手烂妙木俭视图的规划与操作视图的规划与操作

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号