SQLServer数据库技术及应用(第六讲)——索引和约束精品PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
索引
非聚集索引 非聚集索引不会对表和视图进行物理排序。如 果表中不存在聚集索引,则表是未排序的。 在表或视图中,最多可以建立250个非聚集索 引或者249个非聚集索引和1个聚集索引。
索引
复合索引 索引可以应用于表和视图的一列或多列,基于两 列或多列组合而建立的索引称为复合索引。
惟一索引 如果表中任意两行被索引的列不允许出现重复值, 那么这种索引称为惟一索引。
复合索引说明
在(字段1,字段2)上创建的复合索引和在 (字段2,字段1)上创建的复合索引是不同的
查找数据时,只有在where子句中指定了索引 的第一个字段时才使用该复合索引
复合索引中字段的顺序很重要:在顺序上首先 定义最具唯一性的字段列
惟一索引
Unique索引既可以采用聚集索引的结构,也可以采用 非聚集索引的结构。如果不指明clustered选项,SQL Server将为unique索引默认采用非聚集索引的结构。
索引的作用
通过创建唯一索引,可以保证数据记录的唯一性。 可以大大加快数据检索速度。 在使用ORDER BY和GROUP BY子句中进行检索数据时,
可以显著减少查询中分组和排序的时间。 在关系数据库系统中,创建好索引,在以后的使用中,查
询时是否使用索引以及如何使用索引,都是由关系数据库 系统本身确定,而不必用户干预。 在关系数据库系统中,索引创建之后,向表中添加或更新 数据时,表的索引也会随之变化以保证索引的正确,这是 系统自动完成的,对用户也是透明的。
或unique约束创建的索引。要删除这些索引必须 先删除primary key约束或unique约束。 在删除聚集索引时,表中的所有非聚集索引都将 被重建。
重命名索引
• 重命名索引 sp_rename table_name.old_index_name, new_index_name
例:使用SQL语句将XK数据库的student表的索引 IX_stuname重新命名为IX_stunamenew.
约束的种类: 一、Primary key(主键)约束
主键是表中某列或几个列的组合,其值能唯一标 识表中一行 。可以通过定义primary key约束 来创建表的主键。SQL Server自动为主键列创 建惟一索引,来强制数据的惟一性。
约束的种类
二、Foreign key(外健)约束 外键用户建立和加强两个表数据之间的相关性。
第六讲 索引与约束
索引
• 问题 如何提高查询速度? 索引的作用:提高数据库的性能。 在创建索引之前,从数据库中检索数据时,通 常是 按照顺序存取的方法扫描每个记录来查找符合条 件的记 录,效率十分低下。创建索引可以改善此问题。
索引
什么是索引: 数据库中的索引与书籍中的索引类似,在一本
书中,利用索引可以快速查找所需信息,无须 阅读整本书。 在数据库中,索引使数据库程序无须对整个表 进行扫描,就可以在其中找到所需数据。书中 的索引是一个词语列表,其中注明了包含各个 词的页码。而数据库中的索引是某个表中一列 或者若干列值的集合和相应的指向表中物理标 识这些值的数据页的逻辑指针清单。
use xk go exec sp_rename ‘student.IX_stuname’,
‘ IX_stunamenew’ go
约束概述
约束的概念:它定义了关于允许什么数据进入数 据库的规则,是分配给表或表中某列的一个属性。
约束的作用:保证了数据的完整性 – 提问:数据完整性有几类?
约束的种类
建有unique索引的表在执行insert语句或update语句 时,SQL Server将自动检验新数据中是否存在重复值。 如果存在,SQL Server在第一个重复值处取消语句并 返回错误信息。
如果表中已有数据,那么在创建unique索引时,SQL Server将自动检验是否存在重复值,若有重复值,则 不能创建unique索引。
删除索引
使用企业管理器 使用SQL语句
格式: DROP INDEX table_name.index_name 【问题】删除StuCou表中的
IX_StuNoCouNo索Fra Baidu bibliotek Use xk go Drop index stucou.IX_stunocouno go
删除索引
用drop index命令删除索引时,需要注意如下事项: 不能用drop index语句删除由primary key约束
创建索引
【练习】使用SQL语句在StuCou表上创建名为 IX_StuNoCouNo的聚集、唯一、复合索引,该 索引基于StuNo列和CouNo列创建.
use xk go create unique clustered index IX_stunocouno on
stucou(stuno,couno) go
索引的分类: – 聚集索引 – 非聚集索引 – 复合索引 – 唯一索引
索引
索引
聚集索引 聚集索引会对表和视图进行物理排序,所以 这种索引对查询非常有效。 表和视图中只能有一个聚集索引。当建立主 键约束时,如果表中没有聚集索引,SQL Server会用主键列作为聚集索引集。 可以在表的任何列或列的组合上建立索引, 实际应用中一般为定义成主键约束的列建立聚 集索引。
索引
由于数据添加或更新时,也需要对索引进行修 改,在一定程度上降低了添加和更新操作的速 度。
适合使用索引的情况: 1.大量值:表中的记录在列上含有大量不同的 值时,为表建立索引可以起到很好的作用; 2.经常在查询中使用:列在查询中使用得越多, 在该列上创建的索引所能起的加快速度的作用 就越明显; 3.查询返回记录相对较少时; 4.用于两表连接操作。
创建索引
【问题】在Student表上创建基于StuName列, 名为IX_StuName的非聚集、非唯一索引
–注意:创建主键约束和唯一约束时,会自动在 这些列上创建唯一索引
创建索引
【问题】在表course中的课程名称列上建立唯一、 聚集索引. use xk go create unique clustered index IX_couname on course(couname) go