资源描述:
《《索引与数据完整性》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章索引与数据完整性6.1索引6.2数据完整性6.1索引6.1.1索引的分类1.聚集索引聚集索引将数据行的键值在表内排序并存储对应的数据记录,使得数据表物理顺序与索引顺序一致。2.非聚集索引非聚集索引完全独立于数据行的结构。SQLServer2008也是按B树方式组织非聚集索引的,与聚集索引的不同之处在于:非聚集索引B树的叶节点不存放数据页信息,而是存放非聚集索引的键值,并且每个键值项都有指针指向包含该键值的数据行。6.1.2索引的创建1.界面方式创建索引6.1.2索引的创建在“表设计器”窗口创建索引的方法如下。6.1.2索引的创建2.利用SQL命令建立索引使用CREA
2、TEINDEX语句可以为表创建索引。语法格式:CREATE[UNIQUE]/*指定索引是否唯一*/[CLUSTERED
3、NONCLUSTERED]/*索引的组织方式*/INDEXindex_name/*索引名称*/ON{[database_name.[schema_name].
4、schema_name.] table_or_view_name}(column[ASC
5、DESC][,...n])/*索引定义的依据*/[ON{partition_scheme_name(column_name)/*指定分区方案*/
6、filegroup_name/*指定索引文件所在的文件组*/
7、
8、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(学号,课程号)WITH(DROP_EXISTING=ON
9、)【例6.4】根据XSB表中的“总学分”列创建索引,例中使用了FILLFACTOR子句。CREATENONCLUSTEREDINDEXscore_indONXSB(总学分)WITHFILLFACTOR=60【例6.5】根据XSB表中“学号”列创建唯一聚集索引。如果输入了重复的键,将忽略该INSERT或UPDATE语句。CREATEUNIQUECLUSTEREDINDEXxs_indONXSB(学号)WITHIGNORE_DUP_KEY6.1.3重建索引语法格式:ALTERINDEX{index_name
10、ALL}ON[database_name.[schema_name]
11、.
12、schema_name.]table_or_view_name{REBUILD
13、DISABLE}[;]例如,重建KCB表上的所有索引:USEPXSCJGOALTERINDEXALLONKCBREBUILD重建KCB表上的kc_name_id索引:ALTERINDEXkc_name_indONKCBREBUILD6.1.4索引的删除1.通过图形界面方式删除索引启动SQLServerManagementStudio,在对象资源管理器中展开数据库“PXSCJ→表→dbo.XSB→索引”,选择其中要删除的索引,单击鼠标右键,在弹出的快捷菜单上选择“删除”菜单项。在打开的“删除
14、对象”窗口中单击“确定”按钮即可。2.通过SQL命令删除索引从当前数据库中删除一个或多个索引。语法格式:DROPINDEX{index_nameON table_or_view_name[,...n]
15、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数据完整性的分类1.实体完整
16、性实体完整性又称为行的完整性,要求表中有一个主键,其值不能为空且能唯一地标识对应的记录。通过索引、UNIQUE约束、PRIMARYKEY约束或IDENTITY属性可实现数据的实体完整性。2.域完整性域完整性又称为列完整性,指给定列输入的有效性。实现域完整性的方法有:限制类型(通过数据类型)、格式(通过CHECK约束和规则)或可能的取值范围(通过CHECK约束、DEFALUT定义、NOTNULL定义和规则)等。3.参照完整性参照完整性又称为引用完整性。参照完整性保证主表中的数据与从表(被参照表)中数据的一致性。在SQLServe