sqlserver2008数据库应用与开发教学课件作者李新德第六章

上传人:E**** 文档编号:102551908 上传时间:2019-10-03 格式:PPT 页数:59 大小:1.96MB
返回 下载 相关 举报
sqlserver2008数据库应用与开发教学课件作者李新德第六章_第1页
第1页 / 共59页
sqlserver2008数据库应用与开发教学课件作者李新德第六章_第2页
第2页 / 共59页
sqlserver2008数据库应用与开发教学课件作者李新德第六章_第3页
第3页 / 共59页
sqlserver2008数据库应用与开发教学课件作者李新德第六章_第4页
第4页 / 共59页
sqlserver2008数据库应用与开发教学课件作者李新德第六章_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《sqlserver2008数据库应用与开发教学课件作者李新德第六章》由会员分享,可在线阅读,更多相关《sqlserver2008数据库应用与开发教学课件作者李新德第六章(59页珍藏版)》请在金锄头文库上搜索。

1、第六章 索引与数据完整性,项目八 索引的创建和删除 项目九 数据约束和数据完整性,返回,项目八 索引的创建和删除,一、创建索引的原因 当查阅某本书的某个章节时,为了提高查阅速度,不是从书的第一页开始顺序查找,而是首先找到书的目录索引,找到需要的章节在目录中的页码,然后根据这一页码直接找到需要的章节。如果把表的数据看作书的内容,则索引就是书的目录。书的目录指向了书的内容(通过页码),同样,索引是表的关键值,它提供了指向表中行(记录)的指针。目录中的页码是到达书的内容的直接路径,而索引也是到达表数据的直接路径,它使人们可更高效地访问数据。本项目利用索引快速访问数据库表中的特定信息,并为选定的表创建

2、、编辑或删除索引。,下一页,返回,项目八 索引的创建和删除,二、索引的概念 索引是以表为基础的数据库对象,保存着表中排序的索引列,并且记录了索引列在数据表中的物理存储位置,实现了表中的数据的逻辑排序,提高了SQL Server 系统的性能,加快了数据的查询速度,减少了系统的响应时间。它是由除存放表的数据页面以外的索引页面组成的。每个索引页面中的行都包含逻辑指针,通过该指针可以直接检索到数据,这会加速物理数据的检索速度。对表中的列(字段)是否创建索引以及创建何种索引,对检索的速度会有很大的影响。创建了索引的列几乎是立即响应,而未创建索引的列就需要等很长时间。,上一页,下一页,返回,项目八 索引的

3、创建和删除,因为对于未创建索引的列,SQL Server 需要逐行进行搜索,这种搜索耗费的时间直接同表中的数据量成正比。当数据量很大时,耗费的时间是难以想象的。 三、创建索引应考虑的主要因素 (1) 如果一个表建有大量索引,其会影响insert、update 和delete 语句的性能,因为在表中的数据更改时,所有索引都需进行适当的调整。 (2) 覆盖的查询可以提高性能。覆盖的查询是指查询中所有指定的列都包含在同一个索引中。创建覆盖一个查询的索引可以提高性能,因为该查询的所有数据都包含在索引自身当中。,上一页,下一页,返回,项目八 索引的创建和删除,(3) 对小型表进行索引可能不会产生优化效果

4、,因为SQL Server 在遍历索引以搜索数据时,花费的时间可能会比简单的表扫描还长。 四、索引的分类 1. 聚集索引 聚集索引会对表和视图进行物理排序,所以这种索引非常有效,每个表或视图只能有一个聚集索引。将表中的记录在物理数据页中的位置按索引字段值重新排序,再将重排后的结果写回磁盘。如果表中没有聚集索引,SQL Server 会用主键列作为聚集索引。在语句“createindex”中,使用“clustered”选项建立聚集索引。,上一页,下一页,返回,项目八 索引的创建和删除,创建时应注意: (1) 每个表只能有一个聚集索引; (2) 表中的物理顺序和索引中的物理顺序是相同的; (3)

5、保证有足够的空间创建聚集索引。 可考虑将聚集索引用于下面几种情况: (4) 包含大量非重复值的列; (5) 使用下列运算符返回一个范围值的查询:between、=、和=; (6) 被连续访问的列;,上一页,下一页,返回,项目八 索引的创建和删除,(7) 返回大型结果集的查询; (8) 经常被使用连接或group by 子句的列。 2. 非聚集索引 非聚集索引与书中的索引类似,数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置。非聚集索引不会对表或视图进行物理排序,具有与表的数据完全分离的结构,其由数据行指针和一个索引值构成。考虑将非聚集索引用于下面的情况: (1) 包含大

6、量非重复值的列,如姓氏和名字的组合(如果聚集索引用于其他列)。,上一页,下一页,返回,项目八 索引的创建和删除,(2) 不返回大型结果集的查询。 (3) 返回精确匹配的查询的搜索条件(where 子句)中经常使用的列。 (4) 在特定的查询中覆盖一个表中的所有列。 3. 唯一索引 唯一索引(unique index)表示表中任何两行记录的索引值都不相同,与表的主键类似。 它可以确保索引列不包含重复的值。在多列唯一索引的情况下,该索引可以确保索引列中每个值组合都是唯一的。如果该索引列上已经存在重复值,系统就会报错。,上一页,下一页,返回,项目八 索引的创建和删除,五、合理使用索引 选择创建不同的

7、索引时要考虑实际情况,在不同情况下创建聚集索引还是非聚集索引可参考表61。 任务 索引的创建和删除 【任务准备】 1. 使用TSQL 语言创建索引的方法 只有表或视图的所有者才能为表创建索引,可以随时创建索引,无论表中是否有数据。 创建索引是通过create index 语句来完成的,其语法格式如下:,上一页,下一页,返回,项目八 索引的创建和删除,createuniqueclustered | nonclusteredindex 索引名 on表|视图(列asc|desc,n) 各选项的含义如下: (1) unique 为表或视图创建唯一索引(不允许存在索引值相同的两行)。视图上的聚集索引必须

8、是unique 索引。 (2) clustered 创建聚集索引。如果没有指定clustered,则创建非聚集索引。具有聚集索引的视图称为索引视图。必须先为视图创建唯一聚集索引,然后才能为该视图定义其他索引。,上一页,下一页,返回,项目八 索引的创建和删除,(3) nonclustered 创建一个指定表的逻辑排序的对象,即非聚集索引。每个表最多可以有249 个非聚集索引(无论这些非聚集索引的创建方式如何,是使用primary key 和unique 约束隐式创建,还是使用create index 显式创建)。 (4) 索引名:在表或视图中必须唯一,但在数据库中不必唯一。索引名必须遵循标识符规

9、则。 (5) 表:包含要创建索引的列的表。可以选择指定数据库和表所有者。 (6) 视图:要建立索引的视图的名称。,上一页,下一页,返回,项目八 索引的创建和删除,(7) 列:应用索引的列。指定两个或多个列名,可为指定列的组合值创建组合索引。在table 后的圆括号中列出组合索引中要包括的列(按排序优先级排列)。 (8) asc| desc确定具体某个索引列的排序方向升序(asc)或降序(desc),默认设置为asc(升序)。 (9) n 表示可以为特定索引指定多个列的占位符。 2. 使用TSQL 语言删除索引的方法 从当前数据表中删除索引使用drop index 语句,其语法格式如下:,上一页

10、,下一页,返回,项目八 索引的创建和删除,drop index 表索引名 | 视图索引名,n 其中,表索引名和视图索引名是索引列所在的表或索引视图;index 是要除去的索引名称。 索引名必须符合标识符的规则。n 表示可以指定多个索引的占位符。 【任务实施】 一、索引的界面操作 (1) 通过SQL Server 2008 界面操作为表tb_student 中的“studentid”(学号)字段创建聚集索引方法如下:,上一页,下一页,返回,项目八 索引的创建和删除, 打开“SQL Server Management Studio”窗口,选择数据库STUDY 中的表tb_student,然后在“索

11、引”处单击鼠标右键,在打开的快捷菜单中执行“新建索引”命令,打开“新建索引”窗口,如图61 所示。 在“索引名称”文本框中输入索引名称,这里输入“studentID”,如图62 所示。 单击“添加”按钮,打开“从dbo.tb_student中选择列”对话框,如图63 所示。 设置其他选项,例如是创建聚集索引还是创建非聚集索引、是否创建唯一索引等。,上一页,下一页,返回,项目八 索引的创建和删除, 在“选择页”列表中,选择“选项”选项,可打开“选项”选项卡。在此选项卡中,可以设置一些其他选项。 完成后,单击“确定”按钮,即可创建一个新的索引。 (2) 通过SQL Server 2008 界面操作

12、查看索引的方法如下: 在“对象资源管理器”窗口里,选择数据库STUDY 中的表tb_student,然后在“索引”处单击鼠标右键,在打开的快捷菜单中执行“属性”命令,出现“属性索引”窗口,如图64 所示。 在“索引属性”窗口的“常规”页中,可以查看或修改所选择的表或视图的索引的类型等属性信息。,上一页,下一页,返回,项目八 索引的创建和删除, 在“索引属性”窗口的“选项”页中,可以查看或修改所选索引的属性。 在“索引属性”窗口的“包含性列”页中,可以修改以非键列的形式包含在非聚集索引中的列集。 在“索引属性”窗口的“存储”页中,可以查看或修改所选索引的文件组或分区方案属性。此页仅对聚集索引可用

13、。 在“索引属性”窗口的“空间”页中,可以查看或修改索引的空间属性。修改任何空间属性后,将会删除并重新创建该空间索引。 在“索引属性”窗口的“碎片”页中,可以查看索引碎片的状态和重新组织索引。,上一页,下一页,返回,项目八 索引的创建和删除,(3) 通过SQL Server 2008 界面操作删除索引的方法如下: 打开“SQL Server Management Studio”窗口,选择数据库STYDY 中的表tb_student,在要删除的索引上单击鼠标右键,如图65 所示。 出现“删除对象”对话框,确认无误后,单击“确定”按钮,完成删除操作。 (4) 通过SQL Server 2008 界

14、面操作为表tb_student 中的“name”(姓名)字段创建非聚集索引方法如下: 详见【任务实施】“一、索引的界面操作”的步骤(1)。,上一页,下一页,返回,项目八 索引的创建和删除, 在“索引名称”文本框中输入索引名称,这里输入“name1”,如图66 所示。 单击“添加”按钮,打开“从dbo.tb_student中选择列”对话框,如图67 所示。 其余步骤详见【任务实施】“一、索引的界面操作”的步骤(4)、(5)、(6)。 二、索引的语法使用 (1) 通过TSQL 语言为表tb_course 的“coursename”(课程名)”列创建索引。,上一页,下一页,返回,项目八 索引的创建和

15、删除,use STUDY go create index course_name on tb_course(coursename) (2) 创建聚集索引,根据表tb_student 中“studentid(学号)”列创建唯一聚集索引。 create unique clustered index student_name on tb_student(studentid) (3) 删除STUDY 数据库中表tb_course 中一个索引名为“course_name”的索引。 drop index tb_course.course_name,上一页,返回,项目九 数据约束和数据完整性,一、数据的约束

16、 SQL Server 2008 提供了多种对表数据的强制约束,主要有以下几种。 1. primary key(主键)约束 在表中定义一个主键,唯一地标识表中的行,一个表有且只有一个主键约束。也就是说,在数据表中不能存在主键值相同的两行数据,而且位于主键约束下的数据应使用确定的数据,不能输入NULL 来代替确定的数据。在管理数据时,应确保每个数据表都拥有自己唯一的主键,从而实现数据的实体完整性。,下一页,返回,项目九 数据约束和数据完整性,在SQL Server 2008 中,主键约束的创建方式有两种: (1) 作为表定义的一部分在创建表时创建; (2) 对没有主键的表添加主键约束。 2. unique 约束 unique 约束强制执行值的唯一性。对于unique 约束中的列,表中不允许有两行包含相同的非空值。 3. foreign key(外键)约束 用于强制实现表之间的参照完整性,外键必须和主表的主键或唯一键对应,外键约束不允许为空值。 4

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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