第6章索引与数据完整性.ppt
《第6章索引与数据完整性.ppt》由会员分享,可在线阅读,更多相关《第6章索引与数据完整性.ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第6章章 索引与数据完整性索引与数据完整性6.1 索引索引6.2 数据完整性数据完整性6.1 索引索引6.1.1 索引的分类索引的分类1聚集索引聚集索引聚集索引将数据行的键值在表内排序并存储对应的数据记录,使得数据表物理顺序与索引顺序一致。2非聚集索引非聚集索引非聚集索引完全独立于数据行的结构。SQLServer2008也是按B树方式组织非聚集索引的,与聚集索引的不同之处在于:非聚集索引B树的叶节点不存放数据页信息,而是存放非聚集索引的键值,并且每个键值项都有指针指向包含该键值的数据行。6.1.2 索引的创建索引的创建1界面方式创建索引界面方式创建索引6.1.2 索引的创建索引的创建在“表设
2、计器”窗口创建索引的方法如下。6.1.2 索引的创建索引的创建2利用利用SQL命令建立索引命令建立索引使用CREATEINDEX语句可以为表创建索引。语法格式:CREATEUNIQUE/*指定索引是否唯一*/CLUSTERED|NONCLUSTERED/*索引的组织方式*/INDEXindex_name/*索引名称*/ONdatabase_name.schema_name.|schema_name.table_or_view_name(columnASC|DESC,.n)/*索引定义的依据*/ONpartition_scheme_name(column_name)/*指定分区方案*/|file
3、group_name/*指定索引文件所在的文件组*/|default;6.1.2 索引的创建索引的创建【例例6.1】为KCB表的“课程名”列创建索引。USEPXSCJGOCREATEINDEXkc_name_indONKCB(课程名)【例例6.2】根据KCB表的“课程号”列创建唯一聚集索引,因为指定了CLUSTERED,所以该索引将对磁盘上的数据进行物理排序。CREATEUNIQUECLUSTEREDINDEXkc_id_indONKCB(课程号)6.1.2 索引的创建索引的创建【例例6.3】根据CJB表的“学号”列和“课程号”列创建复合索引。CREATEINDEXCJB_indONCJB(学
4、号,课程号)WITH(DROP_EXISTING=ON)【例例6.4】根据XSB表中的“总学分”列创建索引,例中使用了FILLFACTOR子句。CREATENONCLUSTEREDINDEXscore_indONXSB(总学分)WITHFILLFACTOR=60【例例6.5】根据XSB表中“学号”列创建唯一聚集索引。如果输入了重复的键,将忽略该INSERT或UPDATE语句。CREATEUNIQUECLUSTEREDINDEXxs_indONXSB(学号)WITHIGNORE_DUP_KEY6.1.3 重建索引重建索引语法格式:ALTERINDEXindex_name|ALLONdatabas
5、e_name.schema_name.|schema_name.table_or_view_nameREBUILD|DISABLE;例如,重建KCB表上的所有索引:USEPXSCJGOALTERINDEXALLONKCBREBUILD重建KCB表上的kc_name_id索引:ALTERINDEXkc_name_indONKCBREBUILD6.1.4 索引的删除索引的删除1通过图形界面方式删除索引通过图形界面方式删除索引启动SQLServerManagementStudio,在对象资源管理器中展开数据库“PXSCJ表dbo.XSB索引”,选择其中要删除的索引,单击鼠标右键,在弹出的快捷菜单上选
6、择“删除”菜单项。在打开的“删除对象”窗口中单击“确定”按钮即可。2通过通过SQL命令删除索引命令删除索引从当前数据库中删除一个或多个索引。语法格式:DROPINDEXindex_nameONtable_or_view_name,.n|table_or_view_name.index_name,.n【例例6.6】删除PXSCJ数据库中表KCB的一个索引名为kc_name_ind的索引。IFEXISTS(SELECTnameFROMsysindexesWHEREname=kc_name_ind)DROPINDEXKCB.kc_name_ind6.2 数据完整性数据完整性6.2.1 数据完整性的分
7、类数据完整性的分类1实体完整性实体完整性实体完整性又称为行的完整性,要求表中有一个主键,其值不能为空且能唯一地标识对应的记录。通过索引、UNIQUE约束、PRIMARYKEY约束或IDENTITY属性可实现数据的实体完整性。2域完整性域完整性域完整性又称为列完整性,指给定列输入的有效性。实现域完整性的方法有:限制类型(通过数据类型)、格式(通过CHECK约束和规则)或可能的取值范围(通过CHECK约束、DEFALUT定义、NOTNULL定义和规则)等。3参照完整性参照完整性参照完整性又称为引用完整性。参照完整性保证主表中的数据与从表(被参照表)中数据的一致性。在SQLServer2008中,参
8、照完整性的实现是通过定义外键与主键之间或外键与唯一键之间的对应关系来实现的。6.2.1 数据完整性的分类数据完整性的分类码:即前面所说的关键字,又称为“键”,是能唯一标识表中记录的字段或字段组合。如果一个表有多个码,可选其中一个作为主键(主码),其余的称为候选键。外码:如果一个表中的一个字段或若干个字段的组合是另一个表的码,则称该字段或字段组合为该表的外码(外键)。6.2.1 数据完整性的分类数据完整性的分类例如,对于PXSCJ数据库中XSB表的每一个学号,在CJB表中都有相关的课程成绩记录,将XSB作为主表,“学号”字段定义为主键,CJB作为从表,表中的“学号”字段定义为外键,从而建立主表和
9、从表之间的联系,实现参照完整性。XSB和CJB表的对应关系如表6.1和表6.2所示。6.2.2 实体完整性的实现实体完整性的实现1界面创建界面创建PRIMARY KEY约束约束(1)创建PRIMARYKEY约束。(2)删除PRIMARYKEY约束。2界面创建界面创建UNIQUE约束约束(1)创建UNIQUE约束。(2)删除UNIQUE约束。6.2.2 实体完整性的实现实体完整性的实现3命令创建命令创建PRIMARY KEY约束或约束或UNIQUE约束约束(1)在创建表的同时创建PRIMARYKEY约束或UNIQUE约束。语法格式:CREATETABLEtable_name(,n,.n)6.2.
10、2 实体完整性的实现实体完整性的实现其中,为列的约束,为表的约束。:=/*定义列的约束*/CONSTRAINTconstraint_namePRIMARYKEY|UNIQUE/*定义主键与UNIQUE键*/CLUSTERED|NONCLUSTERED/*定义约束的索引类型*/ONpartition_scheme_name(partition_column_name)|filegroup|default|FOREIGNKEY/*定义外键*/|CHECK(logical_expression)/*定义CHECK约束*/:=/*定义表的约束*/CONSTRAINTconstraint_namePRI
11、MARYKEY|UNIQUECLUSTERED|NONCLUSTERED(columnASC|DESC,.n)/*定义表的约束时需要指定列*/ONpartition_scheme_name(partition_column_name)|filegroup|default|FOREIGNKEY(column,.n)|CHECK(logical_expression)6.2.2 实体完整性的实现实体完整性的实现【例例6.7】创建XSB1表(假设XSB1表未创建),并对“学号”字段创建PRIMARYKEY约束,对“姓名”字段定义UNIQUE约束。USEPXSCJGOCREATETABLEXSB1(学
12、号char(6)NOTNULLCONSTRAINTXH_PKPRIMARYKEY,姓名char(8)NOTNULLCONSTRAINTXM_UKUNIQUE,性别bitNOTNULLDEFAULT1,出生时间dateNOTNULL,专业char(12)NULL,总学分 intNULL,备注varchar(500)NULL)6.2.2 实体完整性的实现实体完整性的实现【例例6.8】创建一个course_name表来记录每门课程的学生学号、姓名、课程号、学分和毕业日期。其中,学号、课程号和毕业日期构成复合主键,学分为唯一键。CREATETABLEcourse_name(学号varchar(6)NO
13、TNULL,姓名varchar(8)NOTNULL,毕业日期dateNOTNULL,课程号varchar(3),学分tinyint,PRIMARYKEY(学号,课程号,毕业日期),CONSTRAINTXF_UKUNIQUE(学分)6.2.2 实体完整性的实现实体完整性的实现(2)通过修改表创建PRIMARYKEY约束或UNIQUE约束。【例例6.9】修改例6.7中的XSB1表,向其中添加一个“身份证号码”字段,对该字段定义UNIQUE约束。对“出生时间”字段定义UNIQUE约束。ALTERTABLEXSB1ADD身份证号码char(20)CONSTRAINTSF_UKUNIQUENONCLUS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第6章 索引与数据完整性 索引 数据 完整性
限制150内