数据库原理及应用第二版第6章索引与视图的课件_第1页
数据库原理及应用第二版第6章索引与视图的课件_第2页
数据库原理及应用第二版第6章索引与视图的课件_第3页
数据库原理及应用第二版第6章索引与视图的课件_第4页
数据库原理及应用第二版第6章索引与视图的课件_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、第6章 索引与视图 6.1索引6.1.1基本概念索引用于快速访问数据表中的特定数据,它是对数据表中一个列或多个列值进行排序的存储结构。数据库中的索引与书籍中的目录类似。索引提供一个指针用以指向存在在表中指定列的数据值。然后根据指定排序次序排列这些 指针。索引不真实存储表中的数据只是用来存储指定源表中的记录指针。当对数据表进行查询时,才需要在表上创建索引,而且索引的使用是自动的。另外索引是占用磁盘空间,并且影响添加、删除和更新记录的速度,如果需要频繁的进行数据更新,则需要考虑建立的索引数量。索引也是要进行维护。6.1.2索引的存储结构及分类索引主要有3种类型,聚集索引、非聚集索引和惟一索引。1.

2、聚集索引在聚集索引中,数据表中记录的物理顺序与索引顺序相同,即索引的顺序决定了数据表中记录行的存储顺序,在一个数据表中只能有一个聚集索引,并且在建立表时,如果给某列或某几列指定了主键约束,则系统自动建立了聚集索引。Create table student(学号 char(8) primary key,)聚集索引主要用于以下几种情况:有大量的非重复值的列,列值不重复的列建立聚集索引。2)在某列上经常要使用between,,=,和=等运算符进行查询时,该列应建立聚集索引。3)被连续访问的列4)查询返回大型结果集的,应建立聚集索引。5)经常会被用于分组的列。Group by 列。注意:如果需频繁更改

3、的列,不适合建立聚集索引。2.非聚集索引一个数据表只能建立一个聚集索引,而在表中的每列都可以建立自己的非聚集索引。非聚集索引不像聚集索引一个,聚集索引索引和表的数据是存储在一起的,非聚集索引索引存储在另一个地方,非聚集索引带有指针指向数据的存储位置。一个数据表除了聚集索引之外,其他建立的索引都是非聚集索引。建立非聚集索引一般如下情况:1)不返回大型结果集的查询2)返回精确匹配的搜索条件中经常使用的列,即经常出现在where条件中的列。3)经常需要连接和分组的列。3.唯一索引惟一索引也是一种非聚集索引,只是惟一索引也要求索引列的不重复。只是惟一索引一个数据表能建立多个。但聚集索引虽然也是索引列的

4、不重复,但只能建立一个。聚集索引叫唯一索引。它的功能与主键相似,也可以确保索引列不包含重复的值。如果在建立表时指定unique的惟一键约束,则系统将自动建立一个惟一索引。6.1.3索引的作用1.索引能加快数据的查询速度尤其是用在where子名中的查询列,要建立索引。学生(学号,姓名,性别,出生日期)学号,姓名2.索引能保证数据的实体完整性因为表中建立的聚集索引,能保证列的惟一性,即不能出现重复值,而实体的完整性就是要求二维表不能出现重复行。对于索引的使用要注意的问题:1.索引不是建立的越多越好,经常查询的列建立索引。2.索引要建立聚集索引,选择的都是表中的惟一值的列。且只能建立一个。3.索引会

5、影响添加、修改和删除的速度,因为当添加数据、修改数据和删除数据时,要对索引进行维护。即重新建立索引。6.1.4建立索引1.索引的建立有三种方式:1)使用sql server 2005的管理工具来建立,是一种图形用户界面2)使用sql命令create index建立索引3)使用sql命令create table建立索引,但只能建立聚集索引和惟一索引。2 .索引的形式 在建立索引时需要指定以下索引特征 1.建立的索引是聚集还是非聚集,还是惟一索引。 2.索引是单项索引还是组合索引 单项索引:索引的列是1列,即一个字段。 组合索引:索引的列是多列,即先按第1列索引,第1列相同再按2列索引,以此类推。

6、 3.指定索引是排序类型,即升序还是降序。3.使用create index命令建立索引命令格式为:Create uniqueclusterednonclustered index 索引名 on 表名(列1 asc/desc,列2 asc/desc,)功能是:在指定数据表中的列上建立指定类型的索引。1)unique:表示建立的索引是惟一索引。不允许出现重复值。2)clustered:表示建立的索引是聚集索引,只能是一个。3)nonclustered:表示建立的索引是非聚集索引,即如果省略了以上三项,表示建立的也是非聚集索引,所以此选项可以省略。4)如果是组合索引,则索引列之间用,间隔。5)排序顺

7、序有升序和降序,asc表示升序,可省,desc表示降序不可省。例1:在学生表上按姓名建立惟一索引,索引名为xm_index,降序。create unique index xm_index on 学生(姓名desc)例2:在选课表上按学号和课程号建立聚集索引,索引名为xhkh,学号升序,课程号降序。create clustered index xhkh on 选课(学号,课程号desc)4.删除索引Drop index 表名.索引名6.2 视图6.2.1 试图的概念 视图是由从数据库的基本表中选取出来的数据组成的逻辑窗口,是基本表的部分行和列数据的组合。视图是一个虚表。在数据库中只存放视图的定义

8、,不存放视图包含的数据,这些数据仍存放在原来的基本表中。 视图可以建立在基本表上,也可以建立在其他的视图上,即可以在一个视图之上再定义视图。但对视图数据的操作最终都会转换为对基本表的操作。6.2.2 定义视图定义视图的一般格式为: CREATE VIEW (视图列名表) AS 查询语句 注意以下几点:子查询中通常不包含ORDER BY和DISTINCT子句。在定义视图时要么指定全部视图列,要么全部省略不写。如果省略了视图的属性列名,则视图的列名与子查询列名相同。但在如下三种情况下必须明确指定组成视图的所有列名:某个目标列是计算函数或列表达式;多表连接时选出了几个同名列作为视图的字段需要在视图中

9、为某个列选用新的更合适的列名1、定义单源表视图 单源表视图指的是数据取自一个基本表的部分行、列。这样定义的视图可以进行查询和修改数据操作。例建立信息系学生的视图。 CREATE VIEW IS_Student AS SELECT Sno, Sname, Sage FROM Student WHERE Sdept = 信息系 DBMS执行CREATE VIEW语句的结果只是保存视图的定义,只有在对视图执行查询时,才按视图的定义从相应基本表中查询数据。 2、定义多源表视图 多源表视图指的是定义视图的查询的源表可以有多个,这样定义的视图一般只用于查询,不用于修改数据。 例建立信息系选修了c01号课程

10、的学生的视图。 CREATE VIEW V_IS_S1(Sno, Sname, Grade) AS SELECT Student.Sno, Sname, Sage FROM Student JOIN SC ON Student.Sno = SC.Sno WHERE Sdept = 信息系 AND SC.Cno = c013、在已有视图上定义新视图 在视图上建立视图表示视图的数据源中有视图。作为数据源的视图必须是已经建立好的。 例建立信息系选修了c01号课程且成绩在90分以上的学生的视图。 CREATE VIEW V_IS_S2 AS SELECT Sno, Sname, Grade FROM

11、V_IS_S1 WHERE Grade = 90 4、定义带表达式的视图 在定义基本表时,为减少数据库中的冗余数据,表中只存放基本数据,由基本数据经过各种计算派生出的数据一般是不存储的。但由于视图中的数据并不实际存储,所以定义视图时可以根据需要设置一些派生属性列,在这些派生属性列中保存经过计算的值。 例定义一个反映学生出生年份的视图。CREATE VIEW BT_S(Sno, Sname, Sbirth)AS SELECT Sno, Sname, 2002-Sage FROM Student5、含分组统计信息的视图 含分组统计信息的视图是指视图的子查询中含有GROUP BY子句,这样的视图只能

12、用于查询,不能用于修改数据。 例定义一个存放每个学生的学号及平均成绩的视图。 CREATE VIEW S_G(Sno, AverageGrade) AS SELECT Sno, AVG(Grade) FROM SCGROUP BY Sno 注意:如果查询的选择列表包含表达式或统计函数,而且在查询中也没有为这样的列指定列标题,则在定义视图的语句中必须要指定视图属性列的名字。 6.2.3通过视图查询数据例利用5.2节建立的视图,查询信息系年龄小于20岁的学生。 SELECT Sno, Sname, Sage FROM IS_Student WHERE Sage 20 数据库管理系统在对视图进行查询

13、时,首先检查要查询的视图是否存在,如果存在,则从数据字典中提取视图的定义,把视图的定义语句与对视图的查询语句结合起来,转换成等价的对基本表的查询,然后执行转换后的查询。例上例查询最终转换成的实际查询为: SELECT Sno, Sname, Sage FROM Student WHERE Sdept = 信息系 AND Sage 201. 修改视图的SQL语句的格式为:ALTER VIEW (列名,n) as 查询语句修改视图与定义视图语句基本一样,只是将GREATE VIEW 改成ALTER VIEW6.2.4 修改与删除视图2. 删除视图的SQL语句的格式为: DROP VIEW 例删除IS_Student视图。 DROP VIEW IS_Student 删除视图时需要注意的是,如果被删除的视图是作为其他视图的数

温馨提示

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

评论

0/150

提交评论