SQL Server 数据库教程 2008版 教学课件 郑阿奇 刘启芬 顾韵华 第6章 索引与数据完整性.pdf
文本预览下载声明
第6章索引与数据完整性
6.1 索引
6.2 数据完整性
6.1 索引
6.1.1 索引的分类
1.聚集索引
聚集索引将数据行的键值在表内排序并存储对应的数据记录,使得数据表物理
顺序与索引顺序一致。
2.非聚集索引
非聚集索引完全独立于数据行的结构。SQL Server 2008也是按B树方式组织非
聚集索引的,与聚集索引的不同之处在于:非聚集索引B树的叶节点不存放数据页
信息,而是存放非聚集索引的键值,并且每个键值项都有指针指向包含该键值的数
据行。
6.1.2 索引的创建
1.界面方式创建索引
6.1.2 索引的创建
在“表设计器”窗口创建索引的方法如下。
6.1.2 索引的创建
2.利用SQL命令建立索引
使用CREATE INDEX语句可以为表创建索引。语法格式:
CREATE [ UNIQUE ] /*指定索引是否唯一*/
[ CLUSTERED | NONCLUSTERED ] /*索引的组织方式*/
INDEX index_name /*索引名称*/
ON {[ database_name. [ schema_name ] . |
schema_name. ] table_or_view_name}
( column [ ASC | DESC ] [ ,...n ] ) /*索引定义的依据*/
[ ON { partition_scheme_name ( column_name ) /*指定分区方案*/
| filegroup_name /*指定索引文件所在的文件组*/
| default
}
]
[ ; ]
6.1.2 索引的创建
【例6.1 】为KCB表的“课程名”列创建索引。
USE PXSCJ
GO
CREATE INDEX kc_name_ind
ON KCB(课程名)
【例6.2 】根据KCB表的“课程号”列创建唯一聚集索引,因为指定了
CLUSTERED,所以该索引将对磁盘上的数据进行物理排序。
CREATE UNIQUE CLUSTERED INDEX kc_id_ind
ON KCB (课程号)
6.1.2 索引的创建
【例6.3 】根据CJB表的“学号”列和“课程号”列创建复合索引。
CREATE INDEX CJB_ind
ON CJB(学号, 课程号)
WITH(DROP_EXISTING= ON)
【例6.4 】根据XSB表中的“总学分”列创建索引,例中使用了FILLFACTOR子
句。
CREATE NONCLUSTERED INDEX score_ind
ON XSB(总学分)
WITH FILLFACTOR = 60
【例6.5 】根据XSB表中“学号”列创建唯一聚集索引。如果输入了重复的键,
将忽略该INSERT或UPDATE语句。
CREATE UNIQUE CLUSTERED INDEX xs_ind
ON XSB(学号)
WITH IGNORE_DUP_KEY
6.1.3 重建索引
语法格式:
ALTER INDEX { index_name | ALL }
ON [ database_name. [ schema_name ] . | schema_name. ]table_or_view_name
{ REBUILD
| DISABLE
}
[ ; ]
例如,重建KCB表上的所有索引:
USE PXSCJ
GO
ALTER INDEX ALL ON KCB REBUILD
重建KCB表上的kc_name_id索引:
ALTER
显示全部