ch07__索引与视图.ppt_第1页
ch07__索引与视图.ppt_第2页
ch07__索引与视图.ppt_第3页
ch07__索引与视图.ppt_第4页
ch07__索引与视图.ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、大家好! 咱们回顾一下上节课的 内容吧,数据库技术与应用,第七章 索引与视图,主要内容,一、索引概述 二、索引的操作 三、视图概述 四、视图的操作 五、视图的应用 六、在Oracle 9i中创建和操作视图,为什么要使用索引? 一般情况下,数据库在进行查询操作时需要对整个表进行数据搜索。当表中的数据很多时,搜索数据就需要很长的时间,这就造成了服务器的资源浪费。为了提高检索数据的能力,数据库引入了索引机制,一、索引概述,如何理解数据库索引? 数据库中的索引与书籍中的索引类似 在一本书中,利用索引可以快速查找所需信息,无须阅读整本书 在数据库中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到

2、所需数据 书中的索引是一个词语列表,其中注明了包含各个词的页码 而数据库中的索引是一个表中所包含的值的列表,其中注明了表中包含各个值的行所在的存储位置 可以为表中的单个列建立索引,也可以为一组列建立索引,建立多少个索引才好呢? 索引一经建立,就由系统使用和维护它,不需用户干预 对数据表进行查询时,若查询中涉及到索引字段时,系统会自动选择合适的索引,大大提高查询速度 对数据表中的数据增加、修改、删除时,系统也会自动维护索引,需要花费一些时间。故建立多少索引,需要权衡后处理,索引有哪些类型? 唯一索引:不允许两行具有相同的索引值 主键索引:在为表定义一个主键时,将自动创建主键索引,主键索引是唯一索

3、引的特殊类型 聚集索引:表中各行的物理顺序与键值的逻辑(索引)顺序相同。表只能包含一个聚集索引,二、索引的操作,创建索引 删除索引,创建索引,使用企业管理器创建索引 举例:对学生数据表Student中的姓名Sname建立一个索引 使用Transact-SQL命令创建索引 CREATE UNIQUECLUSTER INDEX ON (,.),UNIQUE表示此索引的每一个索引值只对应唯一的数据记录 CLUSTER表示要建立的索引是聚簇索引 聚簇索引是指索引项的顺序与表中记录的物理顺序一致的索引组织 用户可以在最常查询的列上建立聚簇索引以提高查询效率。显然在一个基本表上最多只能建立一个聚集索引,建

4、立聚簇索引后,更新索引列数据时,往往导致表中记录的物理顺序的变更,代价较大,因此对于经常更新的列不宜建立聚簇索引 如果不是聚集索引,表中各行的物理顺序与键值的逻辑顺序不匹配。聚集索引比非聚集索引有更快的数据访问速度,举例 =示例:建立索引CreateIndex.sql 主索引是聚簇索引,索引的顺序总与数据表的物理记录顺序相同,一个数据表只能有一个聚簇索引,按姓名按降序索引,索引的顺序与数据表的物理顺序不一致,对于汉字的大小,以拼音字母顺序为准,对所在系按缺省的升序索引,相同的索引值可能指向不同的记录,按性别降序和姓名升序索引,只有当第一索引值相同时,才按第二索引值索引,格式 DROP INDE

5、X 注:在SQL Server 中在索引名前还应加上“表名.” 举例 DROP INDEX Student.ixStudName DROP INDEX Student.ixStudDept,删除索引,三、视图概述,视图是从一个或几个基本表(或视图)导出的表,它与基本表不同,是一个虚表 数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中 所有基本表中的数据发生变化,从视图中查询出的数据也随之改变 视图一经定义,就可以和基本表一样被查询、删除,也可以在一个视图上再定义新的视图,但对视图的更新(增加、修改、删除)操作则有一定的限制,四、视图的操作,创建视图 查询视图 更

6、新视图 删除视图,创建视图,格式 CREATE VIEW (,.) AS WITH CHECK OPTION 说明 WITH CHECK OPTION表示对视图进行UPDATE、 INSERT和DELETE操作时要保证更新、插入或删除的行满足视图定义中的谓词条件(即子查询中的条件表达式),如果省略了组成视图的各个属性列名,则隐含该视图由子查询中SELECT子句目标列中的诸字段组成 在下列三种情况下必须明确指定组成视图的所有列名 其中某个目标列不是单纯的属性名,而是集函数或列表达式 多表连接时选出了几个同名列作为视图的字段 需要在视图中为某个列启用新的更合适的名字,例1:建立信息系学生的视图,例

7、2:建立信息系学生的视图,并要求进行修改和插入操作时仍须保证该视图只有信息系的学生,由于在定义IS_Student视图时加上了WITH CHECK OPTION子句,以后对该视图进行插入、修改和删除操作时,DBMS会自动加上Sdept=IS的条件 若一个视图是从单个基本表导出的,并且只是去掉了基本表的某些行和某些列,但保留了码,我们称这类视图为行列子集视图,例3:建立信息系选修了2号课程的学生的视图,例4:建立信息系选修了2号课程且成绩在90分以上的学生的视图,视图不仅可以建立在一个或多个基本表上,也可以建立在一个或多个已定义好的视图上,或同时建立在基本表与视图上,例5:定义一个反映学生出生年

8、份的视图,定义基本表时,为了减少数据库中的冗余数据,表中只存放基本数据,由基本数据经过各种计算派生出的数据一般是不存储的 但由于视图中的数据并不实际存储,所以定义视图时可以根据应用的需要,设置一些派生属性列 这些派生属性由于在基本表中并不实际存在,所以有时也称他们为虚拟列 带虚拟列的视图我们称为带表达式的视图,例6:将学生的学号及他的平均成绩定义为一个视图,可以用带有集函数和GROUP BY子句的查询来定义视图。这种视图称为分组视图,例7:将Student表中所有女生记录定义为一个视图,查询视图,DBMS执行对视图的查询时,首先进行有效性检查,检查查询涉及的表、视图等是否在数据库中存在,如果存

9、在,则从数据字典中取出查询涉及的视图的定义,把定义中的子查询和用户对视图的查询结合起来,转换成对基本表的查询,然后再执行这个经过修正的查询 将对视图的查询转换为对基本表的查询的过程称为视图消解,例1:在信息系学生的视图中找出年龄小于20岁的学生,例2:查询信息系选修了2号课程的学生,更新视图,由于视图是不实际存储数据的虚表,因此对视图的更新,最终要转换为对基本表的更新,例1:将信息系学生视图IS_Student中学号为95002的学生姓名改为“刘辰”,例2:向信息系学生视图IS_S中插入一个新的学生记录,其中学号为95029,姓名为赵新,年龄为20岁,在SQL Server中向视图IS_Stu

10、dent中插入数据时, 不会将IS自动插入到基表中,例3:删除计算机系学生视图CS_S中学号为95029的记录,在关系数据库中,并不是所有的视图都是可更新的,因为有些视图的更新不能唯一地有意义地转换成对相应基本表的更新,例如DB2规定(在SQL Server中也有类似的规定) 若视图的字段来自字段表达式或常数,则不允许对此视图执行INSERT和UPDATE操作,但允许执行DELETE操作 若视图的字段来自集函数,则此视图不允许更新 若视图定义中含有GROUP BY子句,则此视图不允许更新 若视图定义中含有DISTINCT短语,则此视图不允许更新,例如:视图S_G为不可更新视图 CREATE VIEW S_G (Sno,Gavg) AS SELECT Sno, AVG(Grade) FROM SC GROUP BY Sno,删除视图,格式: DROP V

温馨提示

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

评论

0/150

提交评论