数据库原理及应用(第3版)课件:索引及视图应用_第1页
数据库原理及应用(第3版)课件:索引及视图应用_第2页
数据库原理及应用(第3版)课件:索引及视图应用_第3页
数据库原理及应用(第3版)课件:索引及视图应用_第4页
数据库原理及应用(第3版)课件:索引及视图应用_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

索引与视图数据库原理及应用基于SQLServer2022(第3版)目录目录

5.1索引基本概述

5.2常用的索引操作

5.3视图基本概述

5.4视图的基本操作

5.5实验5索引及视图操作

5.6本章小结

教学目标

教学目标●理解索引的相关概念、作用和应用●了解索引的基本结构以及主要原理●理解视图的相关概念和重要的作用●掌握视图定义、查询和更新等操作重点重点重点友情提示同步实验(上机)1.1.1数据库系统的发展及趋势

1.人工数据管理阶段

5.1索引基本概述

在学生表中查询学号为“BX22736”的学生,查询语句为:Select*From学生Where学号='BX22736’查询的最基本方式是逐一顺序比较表中全部记录,筛选where子句中满足指定“学号”的记录。这种查询方式非常耗时、占用存储空间且浪费操作。如果在学生表的“学号”属性列上建立索引,则无需对整个表逐一比较,便可直接定位到查询记录,快速检索出需要的信息。案例5-15.1索引基本概述5.1.1索引的相关概念和特点1.索引的相关概念索引(Index)是数据表中数据(记录)序号的逻辑指针清单。在数据库中,是表中数据和相应存储位置的列表,是加快检索表中指定数据的方法。2.索引的主要特点使用索引可以提高系统性能,主要特点包括5个方面:1)加快数据检索速度。创建索引后,可直接按照索引中位置确定表中记录。2)保证数据记录的唯一性。唯一性索引可以保证表中数据记录不重复。3)加快表与表之间的连接速度,有助于更好的实现数据的参照完整性。4)在使用分组和排序子句检索数据时,可以显著减少分组和排序时间。5)通过索引能够在查询过程中使用优化隐藏器,提高系统的性能。

使用索引可以提高检索效率,同时出现相关问题:1)物理存储空间中除了存放数据表之外,还需要一定的额外空间存放索引,如果要建立聚集索引,需要的空间将会增大。2)索引和维护索引需要耗费时间,这种时间随着数据量的增加而增加。3)数据表进行插入、修改和删除操作时,相应索引也需要动态维护更新,消耗系统资源。2.非聚簇索引:也称非聚类索引、非簇集索引,数据行不按其主键顺序排序和存储的索引。数据与索引分开存储,索引的逻辑顺序与磁盘上行的物理存储顺序不同。默认情况下建立的索引是非聚集索引。一个表可创建多个,最好在唯一值较多的列上创建。1.聚簇索引:也称为聚类索引、簇集索引或物理索引等,将数据行的键值在表内排序并存储对应的记录,使数据表物理顺序(存储顺序)与索引顺序一致。当以某列(字段)作为关键字建立聚集索引时,表中数据以该列作为排序依据。5.1索引基本概述5.1.2索引的常用种类

在数据库中,主要按照索引记录的结构和存放位置索引分类有三种:聚集索引、非聚集索引和其他类型索引。5.1索引基本概述5.1.2索引的常用种类聚集索引和非聚集索引主要区别,如表5-1所示。3.其他类型索引:

除了上述两类索引之外,还有以下其他索引:(1)唯一索引。若需要索引键(值)各不相同,可以创建唯一索引。聚集索引和非聚集索引均可用于强制表内的唯一性,方法是在现有表上创建索引时指定UNIQUE关键字,或用UNIQUE约束确保表内唯一性。(2)视图索引。提供视图查询效率,对可以视图的索引物理化,即将结果集永久存储在索引中,并可创建视图索引。(3)包含新列索引。最大索引列的数量为16,索引列的字节总数的最高值为900。若多个列的字节总数超过时,则可用包含性列索引。(4)全文索引。可以对存储在数据库中的文本数据快速检索。是一种特殊类型的基于标记的功能性索引,每个表只允许有一个。用于帮助在字符串中搜索赋值的词,由SQLServer全文引擎服务创建和维护。(5)XML索引。XML是可扩展标记语言(eXtensibleMarkupLanguage)缩写,相对非结构化的数据,利用标记标识数据,并可与模式关联,给基于XML的数据提供类型或验证信息,是与XML数据关联的索引形式。5.1索引基本概述表5-2SQLServer2022索引类型及其简单说明索引类型简单说明聚簇索引创建索引时,索引键值的逻辑顺序决定表中对应行的物理顺序。聚簇索引的底层(或称为叶)包含该表的实际数据行,因此要求数据库具有额外的可用工作空间来容纳数据的排序结果和原始表或现有聚簇索引数据的临时副本。一个表或者视图只允许同时有一个聚簇索引。非聚簇索引创建一个指定表的逻辑排序的索引。对于非聚簇索引,数据行的物理排序独立于索引排序。一般来说,先创建聚簇索引,后创建非聚簇索引。唯一索引唯一索引保证在索引列中的全部数据是唯一的,不能包含重复数据。如果存在唯一索引,数据库引擎会在每次插入操作添加数据时检查重复值。可生成重复键值的插入操作将被回滚,同时数据库引擎显示错误消息。分区索引为了改善大型表的可管理性和性能,常会对其进行分区。分区表在逻辑上是一个表,而物理上是多个表,对应的可以为已分区表建立分区索引。但是有时亦可以在未分区的表中使用分区索引,为表创建一个使用分区方案的聚簇索引后,一个普通表就变成了分区表。筛选索引筛选索引是一种经过优化的非聚集索引,适用于从表中选择少数行的查询。筛选索引使用筛选谓词对表中的部分数据进行索引。与全表索引相比,设计良好的筛选索引可以提高查询性能、减少索引维护开销、降低索引存储开销。全文索引全文索引主要包含三种分析器:分词器、词干分析器和同义词分析器。生成全文索引就是把表中的文本数据进行分词和提取词干,并转换同义词,过滤掉分词中的停用词,最后把处理之后的数据存储到全文索引中。全文索引中存储分词及其位置等信息,由SQLServer全文引擎生成和维护。使用全文索引可以大大提高从长字符串数据中搜索复杂的词的性能。空间索引是一种扩展索引,允许对数据库中的空间数据类型(如geometry或geography)列编制索引。XML可以对xml数据类型列创建XML索引。它们对列中XML实例的所有标记、值和路径进行索引,从而提高查询性能。计算列上的索引从一个或多个其它列的值或者某些确定的输入值派生的列上建立的索引。带有包含列的索引可以将非键列(称为包含列)添加到非聚集索引的叶级别,从而通过涵盖查询来提高查询性能。也就是说,查询中引用的所有列都作为键列或非键列包含在索引中。这样,查询优化器可以通过索引扫描找到所需的全部信息,而无需访问表或聚集索引数据。列存储索引在常规索引中,表中每行的数据都会存储在一起,每列数据在一个索引中是跨所有页保留的。在列存储索引中,将数据按列来存储并压缩,每列的数据存放在一起。这种将数据按列压缩存储的方式减少了查询对磁盘IO开销和CPU开销,最终达到提升查询效率,降低响应时间的目的。5.1索引基本概述*5.1.2索引的结构及原理

1.索引的层次结构索引的层次结构通常是一个单独的、物理的数据库结构。(1)B-树及索引结点B-树也称为平衡树,是一种多路径搜索树。索引按照B-树结构组织数据,B-树中的每页称为一个索引结点,顶端结点称为根结点,底层结点称为叶结点,底层结点称为叶结点。根结点与叶结点之间的其他索引级别称为中间级。B-树用于在查找特定数据时,提供一致性并节省查找时间。先从根结点开始,每次索引都按照一半或一少半的树枝进行。只有少量数据时,根结点可直指数据的实际位置。5.1索引基本概述*5.1.2索引的结构及原理(2)叶层结点及页拆分叶层结点位于B-树的最底层,是含有实际物理数据的参考点,如图5-1所示。叶更像浏览树的整体,在叶层得到数据的最终结果。根结点常指向很多数据,可指向中间结点(非-叶层结点),是根结点与数据物理存储的结点之间的其他结点,可指向其他的非-叶层结点,或指向叶层结点。对数据索引时,由根结点开始,移到等于或小于所查找的最高值的结点,并查找下一层,然后重复该处理过程,逐层沿着树结构向下查找直到叶层。5.1索引基本概述*5.1.2索引的结构及原理(2)叶层结点及页拆分当数据被添加到数据表中的树结构时,结点需要拆分。在SQL结点等同于页——称为页拆分,如图5-2所示。页拆分时,数据自动来回移动以保证树平衡。第一半数据保留在旧页上,而其余数据则被移到新页中,且可保持树平衡。5.1索引基本概述

2.索引的基本原理SQL检索有两种方法:对表逐行查询和索引。SQL执行特定检索的方法取决于可用的索引、所需列、使用的连接和表的大小等。表的存储组成分为两部分:一是用于存放表的数据页面,二是存放索引页面。索引比数据页面小很多,存放在索引页面。当数据检索时,系统先搜索索引页面,找到所需数据的指针,再直接通过指针从数据页面中读取对应的数据。

如图5-3所示为SQL的pubs示例数据库,employee表的第一列有个索引。显示索引存储每个emp_id值并指向表中含有各值的数据行。表中执行索引,由指定emp_id值查找数据时,可识别emp_id列的索引,并由此索引查找所需数据位置,若无此索引,将从表第一行逐行搜索指定的emp_id值。5.1索引基本概述5.1.3创建索引的策略通常,可以考虑在以下属性列上建立索引:1)在查询条件中常用的列上建立索引,如商品名称列,可加快查询速度2)在连接条件中常出现的列上(外键)建立索引,可以加快连接速度3)在常用排序的列上建立索引,利用索引的排序,可加快检索的速度4)在经常需要搜索连续范围值的列上建立聚集索引,找到第一个匹配行后,满足要求的后续行在物理上是连续且有序的,因此只要将数据值直接与查找的终止值进行比较即可连续提取后续行。建立索引并没明显提高查询速度却增加系统负载的列,不适合建立索引1)在查询中很少用到的列上不应该建立索引。2)在只有很少数据值的列上不应建立索引。如学生表中查询所有男生信息,结果集中的行占了所有行的很大比例,则在性别列上建立索引并不能明显提高查询速度。3)在修改性能远远大于检索性能的列上不宜建立索引,由于增加索引时将降低增加、删除和更新行的速度,即降低修改性能。5.1索引基本概述1)案例5-1中,在学号属性列上建立索引后如何提高了查询效率?2)在外键列上建立索引后怎样加快学生表和选课表的连接速度?

讨论思考5.1索引基本概述5.2常用的索引操作5.2.1索引的创建及使用1.索引的创建在T-SQL语言中,使用CreateIndex语句,创建索引的语法格式为:CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEX<索引名>ON<表名>(<列名>[<次序>][,<列名>[<次序>]]…)其中命令语句中的主要参数说明如下:1)UNIQUE表明要为数据表或视图创建(定义)唯一索引。注意:只有当数据本身具有唯一特征时,建立唯一索引才有意义。如果必须要实施唯一性确保数据的完整性,则应在列上建立唯一约束,而不要创建唯一索引。当在表上创建唯一约束时,系统将自动在该列建立唯一索引。2)CLUSTERED表示要创建聚集索引,若无显示声明,默认创建的是非聚集索引。3)<表名>表示正在准备创建索引(文件)使用的基本表的名称。4)索引可以建立在一个/多个列上,各<列名>之间用逗号分隔开。建立在多个列上的索引称为复合索引。5)<次序>指定索引值的排序方式,包括ASC(升序)和DESC(降序),默认为ASC。

在学生选课表按课程代码升序和学号升序建立唯一索引。CREATEUNIQUEINDEXSC_IndexON选课(课程代码,学号)案例5-2注意:复合索引中,系统按照索引列出现的先后顺序对索引项排序。如案例5-2中,先按照课程代码的值升序排列,课程代码相同时则按照学号的升序排列。5.2常用的索引操作2.索引的查看与使用(1)索引的查看1)查看指定表的索引信息,可用下述语句执行存储过程操作:EXECSP_HELPINDEX<表名>该语句执行结果可返回指定表上所有索引的名称、类型和建立索引的列。5.2常用的索引操作

(1)索引的查看2)查看某个索引的具体统计信息:索引名称、统计密度和统计直方图信息等,可通过SSMS在对象资源管理器中展开指定表中的统计信息结点,右键点击指定索引,从弹出的快捷菜单中选择“属性”,从弹出的“统计信息属性”窗口中可查看该索引的统计信息,如图5-4。5.2常用的索引操作

2.索引的查看与使用

(1)索引的查看3)查看指定表中某个索引的统计信息,可以执行下述语句:DBCCSHOW_STATISTICS(表名,索引名)此命令也可以用于查看指定表中某个索引的统计信息。(2)聚簇索引与非聚簇索引的比较聚集索引可以决定数据的物理存储顺序,而非聚集索引则和数据的物理顺序无关。

在教师表中按照姓名建立非聚集索引,按照姓名降序排列CREATEINDEXTname_IndexON教师(姓名DESC)案例5-3图5-5在非聚簇索引的表中插入数据如图5-5,学生表中原有3条记录,在学生表的学号属性上建立非聚簇索引后,插入新记录(BX22236,测试,男,软件工程,Null,Null),新记录在学生表中最后一行。当在学生表的学号属性上建立的是聚簇索引时,表中原有元组以及插入的新记录都自动按照学号的大小顺序重新排序,其结果如图5-6。图5-6在聚簇索引的表中插入数据

在学生表的学号属性上建立非聚集索引和聚集索引后,分别插入新的记录(BX22236,测试,男,软件工程,Null,Null),对比学生表中新记录所在的位置,可更好地理解聚集索引。案例5-45.2常用的索引操作5.2.2索引的更新与删除1.索引的更新由于数据库中各种数据的不断插入、修改、删除和数据表的变化,数据库系统运行一段时间后,索引对系统的优化性能将出现降低,需要对索引进行分析和更新(重建)。用命令语句确定更新索引,采用的语句格式为:USE<数据库名>DECLARE@table_idint--定义局部变量table_idSET@table_id=object_id('Employee’)DBCCSHOWCONTIG(@table_id)5.2常用的索引操作2.索引的删除在索引建立后,将由系统操作并维护。建立索引是为了快速查询,但如果数据增删改频繁,系统将花费很多时间维护索引,从而降低了查询效率。为此,可以删除一些不必要的索引。SQLServer中提供了索引的删除功能。删除索引的命令语法格式为:

DROPINDEX<索引名>ON<表名或视图名>

或者DROPINDEX<表名或视图名>.<索引名>

注意:DROPINDEX语句不能删除通过PRINARYKEY约束和UNIQUEKEY约束创建的索引。

5.2常用的索引操作

删除教师表中教师的姓名列上的Tname_Index索引。DROPINDEXTname_IndexOn教师

删除索引时,系统会同时从数据字典中删除该索引的相关描述。案例5-51)在数据表的唯一索引列上能插入空值吗?2)说明聚集索引与非聚集索引有哪些区别?

讨论思考5.2常用的索引操作5.3视图基本概述5.3.1视图的概念及作用1.视图的概念

视图(View)是一个由表或其他视图导出的虚拟表。是通过查询(筛选)指定格式和数据的一种特殊表,如购物网页中某个商品展示图或界面。视图只存放其定义及其关联的基表信息而不存放具体实际数据。图5-7表示了视图和基本表的对应关系。视图是数据库基本表中的部分行和部分列数据的组合。表1

表1表25-7视图与基本表对应关系示意图5.3.1视图的概念及作用表1

1.视图的概念可以通过以下几方面理解视图的概念:1)视图是查看数据库中数据的一种机制。如具有某个研究生导师信息的界面2)数据库中只存放视图定义,不存放视图包含的数据,视图不占用物理空间。3)视图中引用的表(可能多个)称为视图的基表,是筛选部分数据的来源。4)对视图的操作转换为对其基表的操作。操作的是视图(格式)对应基表数据。5)基于视图仍然可以创建视图。实际是调用(借用)视图基表数据。5.3视图基本概述5.3.1视图的概念及作用表1

2.视图的作用实际应用中,合理地使用视图机制可以带来很多好处。1)便利用户使用数据。视图注重对用户感兴趣的某些指定数据及特定任务,可以省略无用或敏感数据,便于提高数据的操作效率。2)提供数据安全保护机制。通过视图可以限定用户的查询权限,使部分用户只能查看或修改特定的数据。3)多用户多角度共享数据。当多位不同种类异地用户,通过网络多方式共享数据时,非常需要共享的灵活性,如网银或网购。4)简化数据操作。在对数据库操作时,可以将经常使用的连接、投影、联合查询等定义为视图,在每次执行相同查询时,直接在视图中查询,极大简化了对数据操作。5)数据具有逻辑独立性。用户利用应用系统的视图(外模式)操作数据库。当数据库逻辑结构更新时,只需要修改视图定义,便可保证用户外模式不变,对应应用程序也无需修改。5.3视图基本概述5.3.2视图的种类表1

SQLServer提供了以下4种类型的视图。1.标准视图通过指定格式组合一个或多个基表中的数据,用户可以获得使用视图的便利,充分体现了视图机制的优点。2.索引视图是指常用的从数据库中定期进行构建并存储的视图。3.分区视图在一台或多台服务器之间水平连接一组成员表中的分区数据。4.系统视图存放SQLSERVER系统的部分信息。可用系统视图返回SQLServer实例或在该实例中定义的对象有关的信息。5.3视图基本概述1)采用视图模式查看数据有什么好处?2)视图的种类有哪些?各有什么特点?

讨论思考5.3视图基本概述5.4视图的基本操作5.4.1视图的策划和创建

1.视图构建的策划构建(定义)数据库视图时主要从系统的时间效率、空间效率、易维护等方面出发。构建更符合局部用户需要的视图非常重要。构建视图主要考虑3点:(1)可对不同级别的用户定义不同的视图,以权限管理保证系统的安全性。(2)使用更符合用户习惯的别名。在设计数据库总体结构时,同一关系(表)和属性(列)具有唯一的名字,但在局部应用中,对同一关系或属性,有各自更习惯的名字,可用视图机制在设计用户视图时重新定义某些属性名,使其与用户习惯一致方便使用。(3)简化用户对系统的应用。若某些局部应用中经常使用某些很复杂的查询,为了方便用户,可以将其查询建立为视图,用户每次只对此视图查询,可极大地简化应用。注意:在创建(定义)视图前还应该注意相关的操作细节。5.4视图的基本操作5.4.1视图的策划和创建

2.视图的建立使用命令语句定义视图的语法格式为:CREATEVIEW<视图名>[(<列名>[,<列名>]…)]AS<子查询>[WITHCHECKOPTION]说明:“列名”可以全部省略或全部指定。如果全部省略,表明该视图由子查询中SELECT语句目标列中的各字段构成。对下列情况中,必须明确指定组成视图的列名:子查询SELECT语句中目标列不是单纯的属性名,而是聚集函数或表达式;子查询进行多表连接操作时选出几个同名的列作为视图的属性列;需要为视图中某些列重新命名更适合的别名。

说明:本例中省略了视图的列名,隐含该视图的属性列由子查询中的属性列组成。这种从单个基本表导出,并且只是去掉了基本表的某些行和某些列,但保留了主键,则称这类视图为行列子集视图。WITHCHECKOPTION子句保证了对该视图进行插入、修改和删除操作时,RDBMS将自动加上职称=“教授”的条件。5.4视图的基本操作创建视图“professor”,要求视图中体现教师的工号、系部编号、姓名、性别、年龄和职称。并保证进行修改和插入操作时仍保持视图中只有教授。

CREATEVIEWprofessorASSELECT工号,系部编号,姓名,性别,年龄,职称From教师WHERE职称='教授'WITHCHECKOPTION

案例5-6

创建视图“V_STU”,其中包含学生的学号、姓名、选修课名称和选修课成绩。CREATEVIEWV_STU(学号,姓名,课程名称,成绩)ASSELECT学生.学号,姓名,课程名称,成绩From学生,课程,选课WHERE学生.学号=选课.学号AND课程.课程编号=选课.课程编号说明:本例中视图建立在多个表上。由于学生表中和选课表中有同名列“学号”,所以必须在视图名后面显式说明视图的各属性列名称。

案例5-75.4视图的基本操作

利用例5-6视图,创建年龄小于46岁的教授的视图professor_young”。CREATEVIEWprofessor_youngASSELECT工号,系部编号,教师姓名,性别,年龄,职称FromprofessorWHERE年龄<46说明:本例表示可以在已有视图上定义新视图,此时作为数据源的视图必须是已经建立好的视图。

创建视图“GRADE_AVG”,包括学生的学号及其选修课成绩的平均成绩。

CREATEVIEWGRADE_AVG(学号,平均成绩)ASSELECT学号,avg(成绩)From学生选课GroupBy学号

案例5-8

案例5-9说明:定义基本表时为了减少数据库中的冗余数据,表中只存放基本数据,而能由基本数据经过计算派生出的数据一般不进行存储。由于视图中的数据并不进行实际存储,所以定义视图时可根据需要定义一些派生属性列,也称为虚拟列,此列通常包含表达式或聚集函数。5.4视图的基本操作5.4.2视图重命名、修改及删除1.视图重命名使用SQL命令重命名视图的语法格式为:SP_RENAMEold_name,new_name其中,old_name为原视图名称,new_name为新的试图名称。说明:old_name为原视图名称,new_name为新的试图名称。使用SSMS重命名视图时,在对象资源管理器中,展开包含要重命名的视图的数据库,展开“视图”文件夹。右键单击要重命名的视图,选择“重命名”,输入视图新名称即可。注意:尽管SQLServer支持视图的重命名,但是不建议这种操作。而是建议先删除视图,然后使用新名称重新创建它。通过重新创建视图,可以更新视图中引用的对象的依赖关系信息。5.4视图的基本操作5.4.2视图重命名、修改及删除2.视图的修改修改视图的SQL语句为ALTERVIEW,其具体语法格式为:ALTERVIEW<视图名>AS<子查询>5.4视图的基本操作

将视图“professor”修改为显示年龄大于42的教授的信息。

ALTERVIEWprofessorASSELECT工号,系部编号,姓名,性别,年龄,职称From教师WHERE职称='教授'AND年龄>42

案例5-105.4.2视图重命名、修改及删除3.视图的删除删除视图实际是从数据字典中删除视图的定义和有关该视图的其他信息,还将删除视图的所有权限,所以一定要慎重。删除视图的SQL命令为DROPVIEW,其具体语法格式为:DROPVIEW<视图名>注意:删除视图后只是从数据字典中删除该视图的定义,由该视图导出的其他视图定义仍然在数据字典中,不过都已经失效。为避免用户使用时出错,此时需要用DROPVIEW语句将其逐一删除。5.4视图的基本操作*5.4.3查询视图及有关信息1.视图查询

用例5-6中创建的视图“professor”,查询男教授的相关信息。SELECT工号,系部编号,姓名,性别,年龄,职称FromprofessorWHERE性别='男'本例中对视图的查询经过视图消解,最终转换的实际查询为:SELECT工号,系部编号,姓名,性别,年龄,职称From教师Where职称='教授'AND性别='男'

案例5-115.4视图的基本操作

利用例5-9中创建好的视图“GRADE_AVG”,查询选修课平均成绩大于80的学生学号和平均成绩。SELECT学号,平均成绩FromGRADE_AVGWhere平均成绩>80注意:若将本例的查询与例5-10中定义视图的子查询直接结合,将形成下列查询语句:SELECT学号,avg(成绩)From选课

Whereavg(成绩)>80GroupBy学号其中,这个转换很明显是错误的,因为Where子句中的条件表达式不能使用聚集函数,正确转换后的查询语句应该是:SELECT学号,avg(成绩)From选课GroupBy学号Havingavg(成绩)>80案例5-125.4视图的基本操作2.获取视图相关信息(1)使用SSMS获取视图属性(2)使用视图设计器获取视图属性(3)获取创建视图的SQL语句

向视图“professor”中插入数据(C002,E2450,刘红,女,48,教授)。

INSETRINTOprofessorValues('C002','E2450','刘红','女',48,'教授')案例5-135.4视图的基本操作*5.4.4更新视图视图的更新操作包括插入INSERT,删除DELETE和修改UPDATE,视图更新操作将转换为对基表中数据的相应更新操作。用SQL语句更新视图时,其语法格式同表的更新操作,只是用视图名代替了表名。

修改视图中“professor_young”中工号为E168的教师系部编号改为K4638。UPDATEprofessor_youngSET系部编号='K4638’WHERE工号='E168’该操作执行时将自动转换为对基表的更新:UPDATE教师SET系部编号='K4638’WHERE工号='E168'AND职称='教授'AND年龄<42注意:视图更新的限制:由两个以上基表导出的视图不允许更新;若视图的属性列来自聚集函数,则此视图不允许更新。需要特别注意的是,有些更新视图操作不能直接转化为对基表的更新操作。案例5-145.4视图的基本操作5.4视图基本操作例如,例5-10中创建的视图“GRADE_AVG”中包含学号和平均成绩两个属性列,其中平均成绩是该学生多门选修课的平均分。如果要把视图中学号为“BX22120”的学生平均成绩修改为90,SQL语句应为:UPDATEGRADE_AVGSET平均成绩=90WHERE学号=’BX22120’但是对该视图的更新无法直接转换为对基表“选课”的更新操作,因为系统没有确定的可执行操作来修改多门课程成绩,使得其平均分等于90,所以视图“GRADE_AVG”无法更新。对视图更新的规定一般包括以下几点:1)对于数据表的行列子集视图,可以进行更新操作。2)若视图是由两个以上的基表导出的,则视图的修改不能同时影响两个或者两个以上的基表。也就是说,可以修改两个或多个基表组成的视图,但是一次修改只能影响一个基表。3)被修改的列必须直接引用表列中的基础数据,即这些列不能是由聚集函数或者表达式计算得到的。4)被修改的列不受GROUPBY、HAVING或DISTINCT子句影响。5)对于不允许更新的视图上定义的视图也不允许更新。购书信息(数据)5.4视图的基本操作1)举例说明利用视图机制如何实现数据的保护。如,对于教务管理系统,如何限制计算机系教务管理员只能查看本系学生的成绩数据?2)如何利用视图简化“查询至少选修了学生E168003选修的全部课程的学生号码”?

讨论思考5.4视图的基本操作5.5.1实验目的1)理解索引的相关概念、主要类型及其重要作用。2)掌握SQLSServer2022创建索引和删除索引操作。3)熟悉视图创建、删除等常用的主要基本操作。4)熟悉使用视图查询数据和更新数据常用操作。5.5实验5索引及视图操作

5.5.2实验内容及步骤分别使用SQLServer2022提供的SQLServerManagementStudio(SSMS)工具和SQL语句两种方法实现索引和视图操作。1.索引操作(1)创建索引(2)删除索引

5.5实验5索

温馨提示

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

评论

0/150

提交评论