SQL Server实用教程(第6版)(2008版) 课件 第5章 索引和数据完整性.pptx

SQL Server实用教程(第6版)(2008版) 课件 第5章 索引和数据完整性.pptx

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第5章索引和数据完整性——索引

01索引分类聚集索引非聚集索引

索引分类1.聚集索引聚集索引将数据行的键值在表内排序并存储对应的数据记录,使得数据表的物理顺序与索引顺序一致。SQLServer是按B树(BTREE)方式组织聚集索引的,不论聚集索引里有表的哪个(或哪些)列,这些列都会按顺序保存在表中。由于存在这种排序,所以每个表只会有一个聚集索引。2.非聚集索引非聚集索引完全独立于数据行的结构,它也按B树方式组织。在非聚集索引内,从索引行指向数据行的指针称为行定位器。行定位器的结构取决于数据页的存储方式是堆集还是聚集。对于堆集,行定位器是指向行的指针。对于有聚集索引的表,行定位器是聚集索引键。只有在表上创建聚集索引时,表内的行才按特定顺序存储,这些行按聚集索引键顺序存储。如果一个表只有非聚集索引,则它的数据行将按无序的堆集方式存储。一个表中可有一个或多个非聚集索引。当在SQLServer上创建索引时,可指定是按升序还是按降序存储键。

02索引的创建创建索引复合索引在计算列和视图上创建索引

索引的创建使用CREATEINDEX语句可以为表创建索引。语法格式如下。CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEX索引名 ON?表或视图名 (列名[ASC|DESC]) WITH索引选项说明:(1)UNIQUE:表示为表或视图创建唯一索引(即不允许存在索引值相同的两行)。例如,对于xsb表,根据学号创建唯一索引,即不允许有两个相同的学号出现。(2)CLUSTERED|NONCLUSTERED:指定创建聚集索引还是非聚集索引,前者表示创建聚集索引,后者表示创建非聚集索引。(3)索引名:索引名在表或视图中必须唯一,但在数据库中不必唯一;参数“表或视图名”用于指定包含索引列的表名或视图名,指定表名、视图名时可包含数据库和所属架构。(4)列名:指定建立索引的列,可以为索引指定多个列。指定索引列时,注意表或视图索引列的类型不能为ntext、text或image。(5)WITH索引选项:设定索引记录数据的有效性规则。

索引的创建1.创建索引【例5.1】先为kcb1表的“课程名”列创建索引。再为“课程号”列创建唯一聚集索引,如果输入了重复课程号,将忽略该INSERT或UPDATE语句。1)在xscj创建一个kcb1表USExscjCREATETABLEkcb1(课程号 char(3) NOTNULL,课程名 char(16) NOTNULL,学分 tinyint)2)为kcb1表创建索引CREATEINDEXkc_name ONkcb1(课程名)CREATEUNIQUECLUSTEREDINDEXkc_id ONkcb1(课程号) WITHIGNORE_DUP_KEY

索引的创建3)插入记录INSERTINTOkcb1VALUES(401,就业指导,1)INSERTINTOkcb1VALUES(401,就业指导,1)显示信息如图。

索引的创建2.复合索引由多列构成的索引称为复合索引。【例5.2】根据cjb表的“学号”列和“课程号”列创建复合索引。语句如下:CREATEINDEXcjb_ind ONcjb(学号,课程号)说明:如果替换已经存在的cjb_ind索引需要加WITH子句。CREATEINDEXcjb_ind ONcjb(学号,课程号) WITH(DROP_EXISTING=ON)

索引的创建3.在计算列和视图上创建索引(1)在计算列上创建索引。对于UNIQUE或PRIMARYKEY索引,只要满足索引条件,就可以包含计算列,但计算列必须具有确定性和精确性。若计算列中带有函数,则使用该函数时有相同的参数输入,输出的结果也一定相同时,该计算列是确定的。而对于有些函数,如GETDATE(),每次调用时都输出不同的结果,这时就不能在计算列上定义索引。(2)在视图上创建索引。可以在视图上定义索引。索引视图是一种在数据库中存储视图结果集的方法,可减少动态生成结果集的开销。索引视图还能自动反映出创建索引后对基本表数据所做的修改。

索引的创建【例5.3】基于xsb表创建一个视图,并为该视图创建索引。语句如下:USExscjGOCREATEVIEWxsv1WITHSCHEMABINDING AS SELECT学号,姓名 FROMdbo.xsbGOCREATEUNIQUECLUSTEREDINDEXinx1 ONxsv1(学号)GO

03重建索引

重建索引索引使用一段时间后,可能需要重新生成原来的索引。语法

您可能关注的文档

文档评论(0)

balala11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档