第五讲-数据库保护-网络数据库技术课件

上传人:沈*** 文档编号:241666047 上传时间:2024-07-14 格式:PPT 页数:50 大小:841KB
返回 下载 相关 举报
第五讲-数据库保护-网络数据库技术课件_第1页
第1页 / 共50页
第五讲-数据库保护-网络数据库技术课件_第2页
第2页 / 共50页
第五讲-数据库保护-网络数据库技术课件_第3页
第3页 / 共50页
点击查看更多>>
资源描述
l索引索引l建立索引的作用建立索引的作用l用户对数据库最频繁的操作为数据查询,为提高检索用户对数据库最频繁的操作为数据查询,为提高检索数据的能力,数据库引入索引机制数据的能力,数据库引入索引机制l保证数据记录的唯一性保证数据记录的唯一性l实现表间的参照完整性实现表间的参照完整性l减少减少ORDER BY、GROUP BY查询的排序和分组时间查询的排序和分组时间第五讲第五讲 数据库保护数据库保护数据完整性数据完整性2024/7/142024/7/141 1第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l l索引的定义索引的定义索引的定义索引的定义l l一个单独的、物理的数据库结构。一个单独的、物理的数据库结构。一个单独的、物理的数据库结构。一个单独的、物理的数据库结构。l l是某个表中一列或若干列值的集合和相应的指向表中物理是某个表中一列或若干列值的集合和相应的指向表中物理是某个表中一列或若干列值的集合和相应的指向表中物理是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针表。标识这些值的数据页的逻辑指针表。标识这些值的数据页的逻辑指针表。标识这些值的数据页的逻辑指针表。l l依赖于表建立,提供了数据库中编排表中数据的内部方法。依赖于表建立,提供了数据库中编排表中数据的内部方法。依赖于表建立,提供了数据库中编排表中数据的内部方法。依赖于表建立,提供了数据库中编排表中数据的内部方法。l l表存储由两部分组成表存储由两部分组成表存储由两部分组成表存储由两部分组成l l用来存放表的数据页面用来存放表的数据页面用来存放表的数据页面用来存放表的数据页面l l存放索引页面存放索引页面存放索引页面存放索引页面l l索引存放在索引页面上,通常索引页面相对于数据页面来说小得多。索引存放在索引页面上,通常索引页面相对于数据页面来说小得多。索引存放在索引页面上,通常索引页面相对于数据页面来说小得多。索引存放在索引页面上,通常索引页面相对于数据页面来说小得多。l l当进行数据检索时,系统先搜索索引页面从中找到所需数据的指针,当进行数据检索时,系统先搜索索引页面从中找到所需数据的指针,当进行数据检索时,系统先搜索索引页面从中找到所需数据的指针,当进行数据检索时,系统先搜索索引页面从中找到所需数据的指针,再直接通过指针从数据页面中读取数据。再直接通过指针从数据页面中读取数据。再直接通过指针从数据页面中读取数据。再直接通过指针从数据页面中读取数据。l l从某种程度上可以把数据库看作一本书,把索引看作书的目录,通从某种程度上可以把数据库看作一本书,把索引看作书的目录,通从某种程度上可以把数据库看作一本书,把索引看作书的目录,通从某种程度上可以把数据库看作一本书,把索引看作书的目录,通过目录查找书中的信息显然较没有目录的书方便快捷。过目录查找书中的信息显然较没有目录的书方便快捷。过目录查找书中的信息显然较没有目录的书方便快捷。过目录查找书中的信息显然较没有目录的书方便快捷。2024/7/142024/7/142 2第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l l索引的创建索引的创建索引的创建索引的创建l l用企业管理器创建索引用企业管理器创建索引用企业管理器创建索引用企业管理器创建索引l l用索引创建向导创建索引用索引创建向导创建索引用索引创建向导创建索引用索引创建向导创建索引l l在目录树中选择要创建索引的表的数据库结点,从在目录树中选择要创建索引的表的数据库结点,从在目录树中选择要创建索引的表的数据库结点,从在目录树中选择要创建索引的表的数据库结点,从“工具工具工具工具”菜单中选择菜单中选择菜单中选择菜单中选择“向导向导向导向导”命令,在出现的命令,在出现的命令,在出现的命令,在出现的“选择向导选择向导选择向导选择向导”界面界面界面界面中,单击中,单击中,单击中,单击“创建索引向导创建索引向导创建索引向导创建索引向导”,出现,出现,出现,出现“创建索引向导创建索引向导创建索引向导创建索引向导”界面界面界面界面2024/7/142024/7/145 5第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)2024/7/142024/7/146 6第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l单击单击“下一步下一步”,选择要创建索引的表及其所属的数据库,选择要创建索引的表及其所属的数据库2024/7/142024/7/147 7第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l单击单击“下一步下一步”,显示表中已经存在的索引信息,若表还,显示表中已经存在的索引信息,若表还未创建任何索引,不会出现此界面未创建任何索引,不会出现此界面2024/7/142024/7/148 8第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l单击单击“下一步下一步”,列出表中的所有列信息,从中选择创建,列出表中的所有列信息,从中选择创建索引的列索引的列2024/7/142024/7/149 9第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l l单击单击单击单击“下一步下一步下一步下一步”,列出可供选择的索引设置选项(参考,列出可供选择的索引设置选项(参考,列出可供选择的索引设置选项(参考,列出可供选择的索引设置选项(参考CREATE INDEX CREATE INDEX CREATE INDEX CREATE INDEX 命令)命令)命令)命令)l l单击单击单击单击“下一步下一步下一步下一步”,完成索引创建界面,可指定索引名,及,完成索引创建界面,可指定索引名,及,完成索引创建界面,可指定索引名,及,完成索引创建界面,可指定索引名,及调整组成索引的列顺序,单击调整组成索引的列顺序,单击调整组成索引的列顺序,单击调整组成索引的列顺序,单击“完成完成完成完成”结束索引创建过程,结束索引创建过程,结束索引创建过程,结束索引创建过程,系统会弹出一个创建索引成功信息对话框,系统会弹出一个创建索引成功信息对话框,系统会弹出一个创建索引成功信息对话框,系统会弹出一个创建索引成功信息对话框,2024/7/142024/7/141010第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l l索引的创建索引的创建索引的创建索引的创建l l用企业管理器创建索引用企业管理器创建索引用企业管理器创建索引用企业管理器创建索引l l用索引创建向导创建索引用索引创建向导创建索引用索引创建向导创建索引用索引创建向导创建索引l l直接创建索引直接创建索引直接创建索引直接创建索引l l选择要创建索引的表,单击右键,从快捷菜单中选择选择要创建索引的表,单击右键,从快捷菜单中选择选择要创建索引的表,单击右键,从快捷菜单中选择选择要创建索引的表,单击右键,从快捷菜单中选择“所所所所有任务有任务有任务有任务”中的中的中的中的“管理索引管理索引管理索引管理索引”选项,选项,选项,选项,2024/7/142024/7/141111第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l出现出现“索引管理索引管理”对话框,列出了表中已存在索引,选择对话框,列出了表中已存在索引,选择“新建按钮,进入新建按钮,进入“创建索引创建索引”对话框,输入要创建的索对话框,输入要创建的索引名,再选择索引列并设置索引的各种选项,单击引名,再选择索引列并设置索引的各种选项,单击“确定确定”按钮完成按钮完成2024/7/142024/7/141212第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l l用用用用CREATE INDEX CREATE INDEX 命令创建索引命令创建索引命令创建索引命令创建索引l lCREATE INDEX CREATE INDEX 既可以创建一个可改变表的物理顺既可以创建一个可改变表的物理顺既可以创建一个可改变表的物理顺既可以创建一个可改变表的物理顺序的簇索引也可以创建提高查询性能的非簇索引序的簇索引也可以创建提高查询性能的非簇索引序的簇索引也可以创建提高查询性能的非簇索引序的簇索引也可以创建提高查询性能的非簇索引CREATE UNIQUE CLUSTERED|NONCLUSTEREDCREATE UNIQUE CLUSTERED|NONCLUSTEREDINDEX INDEX ON ON|ASC|DESC ASC|DESC ,.n),.n)WITHWITH,FILLFACTOR=,FILLFACTOR=,IGNORE_DUP_KEY,IGNORE_DUP_KEY,DROP_EXISTING,DROP_EXISTING 若使用两个或以若使用两个或以上的列组成一个上的列组成一个索引,则称为复索引,则称为复合索引。一个索合索引。一个索引中最多可以指引中最多可以指定定16列但列的数列但列的数据类型的长度和据类型的长度和不能超过不能超过900 个字个字节节一个表一个表中惟一,中惟一,同一数同一数据库或据库或不同数不同数据库中据库中可重复可重复数据类型数据类型为为TEXT、NTEXT、IMAGE或或BIT 的列的列不能作为不能作为索引的列索引的列2024/7/142024/7/141313第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l l用用用用CREATE INDEX CREATE INDEX 命令创建索引命令创建索引命令创建索引命令创建索引CREATE UNIQUE CLUSTERED|NONCLUSTEREDCREATE UNIQUE CLUSTERED|NONCLUSTEREDINDEX INDEX ON ON|ASC|DESC ,.n)ASC|DESC ,.n)WITHWITH,FILLFACTOR=,FILLFACTOR=,IGNORE_DUP_KEY,IGNORE_DUP_KEY,DROP_EXISTING,DROP_EXISTING l lUNIQUEUNIQUE:创建惟一索引,即索引的键值不重复,创建惟一索引,即索引的键值不重复,创建惟一索引,即索引的键值不重复,创建惟一索引,即索引的键值不重复,在列包含重复值时不能建惟一索引。还应确定索引所在列包含重复值时不能建惟一索引。还应确定索引所在列包含重复值时不能建惟一索引。还应确定索引所在列包含重复值时不能建惟一索引。还应确定索引所包含的列均不允许包含的列均不允许包含的列均不允许包含的列均不允许NULLNULL值值值值l lCLUSTEREDCLUSTERED:创建的索引为簇索引,若缺省则为创建的索引为簇索引,若缺省则为创建的索引为簇索引,若缺省则为创建的索引为簇索引,若缺省则为非簇索引非簇索引非簇索引非簇索引l lNONCLUSTEREDNONCLUSTERED:创建的索引为非簇索引,其索创建的索引为非簇索引,其索创建的索引为非簇索引,其索创建的索引为非簇索引,其索引数据页包含指向数据库实际表数据页的指针引数据页包含指向数据库实际表数据页的指针引数据页包含指向数据库实际表数据页的指针引数据页包含指向数据库实际表数据页的指针l lASC|DESCASC|DESC:指定索引列的排序方式,默认为升序指定索引列的排序方式,默认为升序指定索引列的排序方式,默认为升序指定索引列的排序方式,默认为升序ASCASC2024/7/142024/7/141414第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l lFILLFACTOR=FILLFACTOR=:创建索引时每个索引页的数据占索引页大小创建索引时每个索引页的数据占索引页大小创建索引时每个索引页的数据占索引页大小创建索引时每个索引页的数据占索引页大小的百分比。的百分比。的百分比。的百分比。l l 的值为的值为的值为的值为0 0到到到到100100。l l它同时指出了索引页保留的自由空间占索引页大小的百分比,即它同时指出了索引页保留的自由空间占索引页大小的百分比,即它同时指出了索引页保留的自由空间占索引页大小的百分比,即它同时指出了索引页保留的自由空间占索引页大小的百分比,即100-100-。l l对于频繁进行大量数据插入或删除的表,在建索引时应为将来生成的索引对于频繁进行大量数据插入或删除的表,在建索引时应为将来生成的索引对于频繁进行大量数据插入或删除的表,在建索引时应为将来生成的索引对于频繁进行大量数据插入或删除的表,在建索引时应为将来生成的索引数据预留较大的空间,即将数据预留较大的空间,即将数据预留较大的空间,即将数据预留较大的空间,即将 设得较小,否则索引页会因数据的设得较小,否则索引页会因数据的设得较小,否则索引页会因数据的设得较小,否则索引页会因数据的插入而很快填满并产生分页,而分页会大大增加系统的开销。插入而很快填满并产生分页,而分页会大大增加系统的开销。插入而很快填满并产生分页,而分页会大大增加系统的开销。插入而很快填满并产生分页,而分页会大大增加系统的开销。l l但如果设得过小又会浪费大量的磁盘空间,降低查询性能。因此对于此类但如果设得过小又会浪费大量的磁盘空间,降低查询性能。因此对于此类但如果设得过小又会浪费大量的磁盘空间,降低查询性能。因此对于此类但如果设得过小又会浪费大量的磁盘空间,降低查询性能。因此对于此类表通常设一个大约为表通常设一个大约为表通常设一个大约为表通常设一个大约为1010的的的的 ,而对于数据不更改的、高并发的只,而对于数据不更改的、高并发的只,而对于数据不更改的、高并发的只,而对于数据不更改的、高并发的只读表,读表,读表,读表,可设到可设到可设到可设到9595以上乃至以上乃至以上乃至以上乃至100100。l lIGNORE_DUP_KEYIGNORE_DUP_KEY:控制当往包含在惟一约束中的列中插入重复数据时,控制当往包含在惟一约束中的列中插入重复数据时,控制当往包含在惟一约束中的列中插入重复数据时,控制当往包含在惟一约束中的列中插入重复数据时,SQL ServerSQL Server所作的反应。选择此项,所作的反应。选择此项,所作的反应。选择此项,所作的反应。选择此项,SQL ServerSQL Server返回一个错误信息,跳过返回一个错误信息,跳过返回一个错误信息,跳过返回一个错误信息,跳过此行数据的插入,继续执行下面的插入操作;未选此项,此行数据的插入,继续执行下面的插入操作;未选此项,此行数据的插入,继续执行下面的插入操作;未选此项,此行数据的插入,继续执行下面的插入操作;未选此项,SQL ServerSQL Server除返除返除返除返回错误信息外,还会回滚整个回错误信息外,还会回滚整个回错误信息外,还会回滚整个回错误信息外,还会回滚整个INSERTINSERT语句。语句。语句。语句。l lDROP_EXISTINGDROP_EXISTING:删除并重新创建簇索引。删除并重新创建簇索引。删除并重新创建簇索引。删除并重新创建簇索引。2024/7/142024/7/141515第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l l例:为表例:为表例:为表例:为表products products 创建一个簇索引创建一个簇索引创建一个簇索引创建一个簇索引create unique clustered index pk_p_idcreate unique clustered index pk_p_idon products(ProductId)on products(ProductId)withwithfillfactor=10,fillfactor=10,ignore_dup_key,ignore_dup_key,drop_existingdrop_existingl l例:为表例:为表例:为表例:为表products products 创建一个复合索引创建一个复合索引创建一个复合索引创建一个复合索引create index pk_p_maincreate index pk_p_mainon products(ProductID,ProductName,UnitPrice)on products(ProductID,ProductName,UnitPrice)withwithfillfactor=50fillfactor=502024/7/142024/7/141616第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l l查看与修改索引查看与修改索引查看与修改索引查看与修改索引l l用企业管理器查看修改索引用企业管理器查看修改索引用企业管理器查看修改索引用企业管理器查看修改索引l l选择要查看的数据库表上单击右键,从快捷菜单中选择选择要查看的数据库表上单击右键,从快捷菜单中选择选择要查看的数据库表上单击右键,从快捷菜单中选择选择要查看的数据库表上单击右键,从快捷菜单中选择”所有任务所有任务所有任务所有任务“中的中的中的中的”管理索引管理索引管理索引管理索引“项,出现项,出现项,出现项,出现”索引管理索引管理索引管理索引管理“对话框对话框对话框对话框l l选择要查看或修改的索引,单击选择要查看或修改的索引,单击选择要查看或修改的索引,单击选择要查看或修改的索引,单击”编辑编辑编辑编辑“按钮,出现按钮,出现按钮,出现按钮,出现”修改索引修改索引修改索引修改索引“对话框对话框对话框对话框l l可修改索引的大部分设置,还可单击可修改索引的大部分设置,还可单击可修改索引的大部分设置,还可单击可修改索引的大部分设置,还可单击”编辑编辑编辑编辑SQL“SQL“按钮,在显示按钮,在显示按钮,在显示按钮,在显示的的的的SQLSQL脚本编辑框直接修改其脚本编辑框直接修改其脚本编辑框直接修改其脚本编辑框直接修改其SQLSQL脚本,但不能修改索引名,程序脚本,但不能修改索引名,程序脚本,但不能修改索引名,程序脚本,但不能修改索引名,程序方式的索引名修改需要使用系统存储过程方式的索引名修改需要使用系统存储过程方式的索引名修改需要使用系统存储过程方式的索引名修改需要使用系统存储过程 Sp_renameSp_renamel l要在企业管理器中修改索引名、改变其所属文件组等其它信息则需要在企业管理器中修改索引名、改变其所属文件组等其它信息则需要在企业管理器中修改索引名、改变其所属文件组等其它信息则需要在企业管理器中修改索引名、改变其所属文件组等其它信息则需要在表的属性对话框中进行,该属性对话框是从要在表的属性对话框中进行,该属性对话框是从要在表的属性对话框中进行,该属性对话框是从要在表的属性对话框中进行,该属性对话框是从”设计表结构设计表结构设计表结构设计表结构“对对对对话框中调用,而不是直接通过快捷菜单的话框中调用,而不是直接通过快捷菜单的话框中调用,而不是直接通过快捷菜单的话框中调用,而不是直接通过快捷菜单的”属性属性属性属性“菜单项调用菜单项调用菜单项调用菜单项调用2024/7/142024/7/141717第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l l查看与修改索引查看与修改索引查看与修改索引查看与修改索引l l用企业管理器查看修改索引用企业管理器查看修改索引用企业管理器查看修改索引用企业管理器查看修改索引l l用存储过程用存储过程用存储过程用存储过程Sp_helpindex Sp_helpindex 查看索引查看索引查看索引查看索引l l返回表的所有索引的信息:返回表的所有索引的信息:返回表的所有索引的信息:返回表的所有索引的信息:sp_helpindex objname=sp_helpindex objname=表名表名表名表名 l l例:查看表例:查看表例:查看表例:查看表orders orders 的索引的索引的索引的索引 use northwinduse northwind exec sp_helpindex orders exec sp_helpindex ordersl l运行结果为运行结果为运行结果为运行结果为3 3列:索引名、索引描述、索引键列:索引名、索引描述、索引键列:索引名、索引描述、索引键列:索引名、索引描述、索引键l l用存储过程用存储过程用存储过程用存储过程Sp_rename Sp_rename 更改索引名更改索引名更改索引名更改索引名l l例:例:例:例:更改更改更改更改ordersorders表中的索引表中的索引表中的索引表中的索引orders_quan orders_quan 名为名为名为名为orders_quantityorders_quantity exec sp_rename orders.orders_quan,orders_quantity,index exec sp_rename orders.orders_quan,orders_quantity,index2024/7/142024/7/141818第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l l删除索引删除索引删除索引删除索引l l用企业管理器删除索引用企业管理器删除索引用企业管理器删除索引用企业管理器删除索引l l在在在在”索引管理索引管理索引管理索引管理“对话框或对话框或对话框或对话框或”表属性表属性表属性表属性“对话框中选择要删除的索对话框中选择要删除的索对话框中选择要删除的索对话框中选择要删除的索引,再选择引,再选择引,再选择引,再选择”删除删除删除删除“按钮按钮按钮按钮l l用用用用DROP INDEX DROP INDEX 命令删除索引命令删除索引命令删除索引命令删除索引l l可删除一个或多个当前数据库中的索引可删除一个或多个当前数据库中的索引可删除一个或多个当前数据库中的索引可删除一个或多个当前数据库中的索引 DROP INDEX DROP INDEX 表名表名表名表名.索引名索引名索引名索引名,.n,.nl l注注注注l l不能删除由不能删除由不能删除由不能删除由CREATE TABLE CREATE TABLE 或或或或ALTER TABLE ALTER TABLE 命令创建命令创建命令创建命令创建的的的的PRIMARY KEY PRIMARY KEY 或或或或UNIQUE UNIQUE 约束索引约束索引约束索引约束索引l l不能删除系统表中的索引不能删除系统表中的索引不能删除系统表中的索引不能删除系统表中的索引l l例:删除表例:删除表例:删除表例:删除表productsproducts中的索引中的索引中的索引中的索引p_quantityp_quantity drop index products1.p_quantity drop index products1.p_quantity2024/7/142024/7/141919第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l l数据完整性概述数据完整性概述l l输入数据库中的数据可能无效或错误,为保证输入的数据输入数据库中的数据可能无效或错误,为保证输入的数据输入数据库中的数据可能无效或错误,为保证输入的数据输入数据库中的数据可能无效或错误,为保证输入的数据符合规定,成为数据库系统特别是多用户关系数据库系统符合规定,成为数据库系统特别是多用户关系数据库系统符合规定,成为数据库系统特别是多用户关系数据库系统符合规定,成为数据库系统特别是多用户关系数据库系统首要关注的问题首要关注的问题首要关注的问题首要关注的问题l l数据完整性(数据完整性(数据完整性(数据完整性(Data IntegrityData Integrity)l l指数据的精确性(指数据的精确性(指数据的精确性(指数据的精确性(AccuracyAccuracy)和可靠性()和可靠性()和可靠性()和可靠性(ReliabilityReliability),),),),为防止数据库中存在不符合语义规定的数据和防止因错为防止数据库中存在不符合语义规定的数据和防止因错为防止数据库中存在不符合语义规定的数据和防止因错为防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成的无效操作或错误信息误信息的输入输出造成的无效操作或错误信息误信息的输入输出造成的无效操作或错误信息误信息的输入输出造成的无效操作或错误信息l l分类(分类(分类(分类(4 4类)类)类)类)l l实体完整性(实体完整性(实体完整性(实体完整性(Entity IntegrityEntity Integrity)l l域完整性域完整性域完整性域完整性Domain IntegrityDomain Integrityl l参照完整性参照完整性参照完整性参照完整性Referential IntegrityReferential Integrityl l用户定义的完整性用户定义的完整性用户定义的完整性用户定义的完整性User-defined IntegrityUser-defined Integrity2024/7/142024/7/142020第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l l实体完整性(实体完整性(实体完整性(实体完整性(Entity IntegrityEntity Integrity)l l规定表的每一行在表中是惟一的。实体表中定义的规定表的每一行在表中是惟一的。实体表中定义的规定表的每一行在表中是惟一的。实体表中定义的规定表的每一行在表中是惟一的。实体表中定义的UNIQUEUNIQUE、PRIMARY KEYPRIMARY KEY、和、和、和、和IDENTITYIDENTITY约束都是实体完整性的体现约束都是实体完整性的体现约束都是实体完整性的体现约束都是实体完整性的体现l l域完整性域完整性域完整性域完整性Domain IntegrityDomain Integrityl l指数据库表中的列必须满足某种特定的数据类型或约束,其中指数据库表中的列必须满足某种特定的数据类型或约束,其中指数据库表中的列必须满足某种特定的数据类型或约束,其中指数据库表中的列必须满足某种特定的数据类型或约束,其中约束又包括取值范围、精度等规定。表中的约束又包括取值范围、精度等规定。表中的约束又包括取值范围、精度等规定。表中的约束又包括取值范围、精度等规定。表中的CHECKCHECK、FOREIGN KEYFOREIGN KEY约束和约束和约束和约束和DEFAULTDEFAULT、NOT NULLNOT NULL定义都属于域定义都属于域定义都属于域定义都属于域完整性的范畴完整性的范畴完整性的范畴完整性的范畴l l参照完整性参照完整性参照完整性参照完整性Referential IntegrityReferential Integrityl l两个表的主键和外键的数据应对应一致。它确保了有主键的表两个表的主键和外键的数据应对应一致。它确保了有主键的表两个表的主键和外键的数据应对应一致。它确保了有主键的表两个表的主键和外键的数据应对应一致。它确保了有主键的表中对应其它表的外键的行存在,即保证表之间的数据的一致性,中对应其它表的外键的行存在,即保证表之间的数据的一致性,中对应其它表的外键的行存在,即保证表之间的数据的一致性,中对应其它表的外键的行存在,即保证表之间的数据的一致性,防止数据丢失或无意义的数据在数据库中扩散。防止数据丢失或无意义的数据在数据库中扩散。防止数据丢失或无意义的数据在数据库中扩散。防止数据丢失或无意义的数据在数据库中扩散。l l参照完整性是建立在外键和主键之间或外键和惟一性关键字之参照完整性是建立在外键和主键之间或外键和惟一性关键字之参照完整性是建立在外键和主键之间或外键和惟一性关键字之参照完整性是建立在外键和主键之间或外键和惟一性关键字之间的关系上的,在间的关系上的,在间的关系上的,在间的关系上的,在SQL Server SQL Server 中参照完整性作用表现在如下几中参照完整性作用表现在如下几中参照完整性作用表现在如下几中参照完整性作用表现在如下几个方面个方面个方面个方面l l禁止在从表中插入包含主表中不存在的关键字的数据行禁止在从表中插入包含主表中不存在的关键字的数据行禁止在从表中插入包含主表中不存在的关键字的数据行禁止在从表中插入包含主表中不存在的关键字的数据行2024/7/142024/7/142121第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l l禁止会导致从表中的相应值孤立的主表中的外关键字值改变禁止会导致从表中的相应值孤立的主表中的外关键字值改变禁止会导致从表中的相应值孤立的主表中的外关键字值改变禁止会导致从表中的相应值孤立的主表中的外关键字值改变l l禁止删除在从表中的有对应记录的主表记录禁止删除在从表中的有对应记录的主表记录禁止删除在从表中的有对应记录的主表记录禁止删除在从表中的有对应记录的主表记录l l用户定义的完整性用户定义的完整性用户定义的完整性用户定义的完整性User-defined IntegrityUser-defined Integrityl l根据应用环境的不同所需的一些特殊约束条件,是针对某个根据应用环境的不同所需的一些特殊约束条件,是针对某个根据应用环境的不同所需的一些特殊约束条件,是针对某个根据应用环境的不同所需的一些特殊约束条件,是针对某个特定关系数据库的约束条件,它反映某一具体应用所涉及的特定关系数据库的约束条件,它反映某一具体应用所涉及的特定关系数据库的约束条件,它反映某一具体应用所涉及的特定关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。数据必须满足的语义要求。数据必须满足的语义要求。数据必须满足的语义要求。数据完整性数据完整性数据完整性数据完整性类类型型型型实现实现方法方法方法方法实实体完整性体完整性体完整性体完整性Primary KeyPrimary Key、Unique KeyUnique Key、Unique IndexUnique Index、Identity Identity ColumnColumn域完整性域完整性域完整性域完整性DefaultDefault、CHECKCHECK、Foreign KeyForeign Key、Data TypeData Type、RuleRule参照完整性参照完整性参照完整性参照完整性Foreign KeyForeign Key、CHECKCHECK、TriggerTrigger、ProcedureProcedure用用用用户户定定定定义义完整性完整性完整性完整性RuleRule、TriggerTrigger、ProcedureProcedure、Create TableCreate Table中的所有列中的所有列中的所有列中的所有列级级和表和表和表和表级约级约束束束束2024/7/142024/7/142222第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l l使用约束实现数据完整性使用约束实现数据完整性使用约束实现数据完整性使用约束实现数据完整性l l约束(约束(约束(约束(ConstraintConstraint)限制输入到表中的值的范围,)限制输入到表中的值的范围,)限制输入到表中的值的范围,)限制输入到表中的值的范围,SQL SQL ServerServer提供多种约束提供多种约束提供多种约束提供多种约束l lPrimary Key Primary Key 约束约束约束约束l lForeign Key Foreign Key 约束约束约束约束l lUnique Unique 约束约束约束约束l lCHECK CHECK 约束约束约束约束l l创建约束前要考虑的问题创建约束前要考虑的问题创建约束前要考虑的问题创建约束前要考虑的问题l l什么约束实现自己所需的数据完整性什么约束实现自己所需的数据完整性什么约束实现自己所需的数据完整性什么约束实现自己所需的数据完整性l l约束实施的时机约束实施的时机约束实施的时机约束实施的时机l l列级约束列级约束列级约束列级约束l l行定义的一部分,只能应用在一列上行定义的一部分,只能应用在一列上行定义的一部分,只能应用在一列上行定义的一部分,只能应用在一列上l l表级约束表级约束表级约束表级约束l l定义独立于列的定义,可以应用在一个表中的多列上定义独立于列的定义,可以应用在一个表中的多列上定义独立于列的定义,可以应用在一个表中的多列上定义独立于列的定义,可以应用在一个表中的多列上l l查看约束信息查看约束信息查看约束信息查看约束信息l l使用使用使用使用sp_helpconstraintsp_helpconstraint系统存储过程:系统存储过程:系统存储过程:系统存储过程:sp_helpconstraint sp_helpconstraint 2024/7/142024/7/142323第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l l使用使用PRIMARY KEY约束(主键约束)约束(主键约束)l l指定表的一列或几列的组合值在表中具有惟一性,即能惟指定表的一列或几列的组合值在表中具有惟一性,即能惟指定表的一列或几列的组合值在表中具有惟一性,即能惟指定表的一列或几列的组合值在表中具有惟一性,即能惟一标识一行记录。一标识一行记录。一标识一行记录。一标识一行记录。l l操作方式有操作方式有操作方式有操作方式有3 3l l在创建表时,定义主键,主键是表的一部分在创建表时,定义主键,主键是表的一部分在创建表时,定义主键,主键是表的一部分在创建表时,定义主键,主键是表的一部分l l在一个没有定义主键的表上,加上一个主键在一个没有定义主键的表上,加上一个主键在一个没有定义主键的表上,加上一个主键在一个没有定义主键的表上,加上一个主键l l修改或删除表上已经定义的主键修改或删除表上已经定义的主键修改或删除表上已经定义的主键修改或删除表上已经定义的主键l l定义主键定义主键定义主键定义主键CONSTRAINT CONSTRAINT PRIMARY KEY CLUSTERED|NONCLUSTEREDPRIMARY KEY CLUSTERED|NONCLUSTERED(,)16)约束名在数据库中是惟一约束名在数据库中是惟一的,若不指定,系统会自的,若不指定,系统会自动生成一个约束名动生成一个约束名指定索引类别,指定索引类别,CLUSTERED 为缺省值为缺省值指定组指定组成主键成主键的列名,的列名,主键最主键最多由多由1616列组成列组成每个表中只能有一列被指定为主键每个表中只能有一列被指定为主键IMAGE IMAGE 和和TEXT TEXT 类型的列不能被指定为主键类型的列不能被指定为主键不允许指定的主键列有不允许指定的主键列有NULLNULL属性属性若在多列上建立主键,必须建立表级约束若在多列上建立主键,必须建立表级约束2024/7/142024/7/142424第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l l例例例例:创建一个产品信息表以产品编号和名称为主关创建一个产品信息表以产品编号和名称为主关创建一个产品信息表以产品编号和名称为主关创建一个产品信息表以产品编号和名称为主关键字键字键字键字create table products(create table products(ProductID char(8)not null,ProductID char(8)not null,ProductName char(10)not null,ProductName char(10)not null,price money default 0.01,price money default 0.01,quantity smallint null,quantity smallint null,constraint pk_p_id primary key constraint pk_p_id primary key(ProductID,ProductName)(ProductID,ProductName)2024/7/142024/7/142525第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l l使用企业管理器定义主键使用企业管理器定义主键使用企业管理器定义主键使用企业管理器定义主键l l创建表时在某(些)列上单击右键,从快捷菜单中选择创建表时在某(些)列上单击右键,从快捷菜单中选择创建表时在某(些)列上单击右键,从快捷菜单中选择创建表时在某(些)列上单击右键,从快捷菜单中选择”设置主键设置主键设置主键设置主键“设置或取消主键设置或取消主键设置或取消主键设置或取消主键l l创建表时选择某(些)列上,单击工具栏上的创建表时选择某(些)列上,单击工具栏上的创建表时选择某(些)列上,单击工具栏上的创建表时选择某(些)列上,单击工具栏上的”主键主键主键主键“图标设置或取图标设置或取图标设置或取图标设置或取消主键消主键消主键消主键l l查看主键信息查看主键信息查看主键信息查看主键信息l l使用存储过程使用存储过程使用存储过程使用存储过程sp_pkeyssp_pkeys:sp_pkeys sp_pkeys l l删除主键删除主键删除主键删除主键ALTER TABLE ALTER TABLE DROP CONSTRAINT DROP CONSTRAINT,n,nl l例:删除建立在表例:删除建立在表例:删除建立在表例:删除建立在表test1test1上的主键约束上的主键约束上的主键约束上的主键约束ALTER TABLE products ALTER TABLE products DROP CONSTRAINT pk_p_id DROP CONSTRAINT pk_p_id 2024/7/142024/7/142626第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l l添加主键添加主键添加主键添加主键ALTER TABLE ALTER TABLE ADD CONSTRAINT ADD CONSTRAINT PRIMARY KEY CLUSTERED|NONCLUSTEREDPRIMARY KEY CLUSTERED|NONCLUSTERED(,)16)例:恢复表例:恢复表例:恢复表例:恢复表test1test1中的主键中的主键中的主键中的主键ALTER TABLE products ALTER TABLE products ADD CONSTRAINTADD CONSTRAINT pk pk_p_id _p_id PRIMARY KEY CLUSTERED PRIMARY KEY CLUSTERED(ProductIDProductID,ProductName ProductName)GoGo2024/7/142024/7/142727第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l l使用使用使用使用UNIQUEUNIQUE约束约束约束约束l l用来确保不受主键约束的列上的数据的惟一性,与主键的区别为:用来确保不受主键约束的列上的数据的惟一性,与主键的区别为:用来确保不受主键约束的列上的数据的惟一性,与主键的区别为:用来确保不受主键约束的列上的数据的惟一性,与主键的区别为:l l用在非主键的一列或多列上要求数据唯一的情况用在非主键的一列或多列上要求数据唯一的情况用在非主键的一列或多列上要求数据唯一的情况用在非主键的一列或多列上要求数据唯一的情况l l允许列可以有允许列可以有允许列可以有允许列可以有NULLNULL值值值值l l可在一个表上设置多个唯一约束,而一个表上只能有一个主键可在一个表上设置多个唯一约束,而一个表上只能有一个主键可在一个表上设置多个唯一约束,而一个表上只能有一个主键可在一个表上设置多个唯一约束,而一个表上只能有一个主键l l在创建表时定义在创建表时定义在创建表时定义在创建表时定义UNIQUE UNIQUE 约束约束约束约束CONSTRAINT CONSTRAINT UNIQUE CLUSTERED|NONCLUSTEREDUNIQUE CLUSTERED|NONCLUSTERED,16l l例:定义一个员工信息表,其中员工的身份证号具有惟一性例:定义一个员工信息表,其中员工的身份证号具有惟一性例:定义一个员工信息表,其中员工的身份证号具有惟一性例:定义一个员工信息表,其中员工的身份证号具有惟一性create table employees(create table employees(emp_id char(8),emp_id char(8),emp_name char(10),emp_name char(10),emp_cardid char(18),emp_cardid char(18),constraint pk_emp_id primary key(emp_id),constraint pk_emp_id primary key(emp_id),constraint uk_emp_cardid unique(emp_cardid)constraint uk_emp_cardid unique(emp_cardid)2024/7/142024/7/142828第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l l使用企业管理器完成使用企业管理器完成使用企业管理器完成使用企业管理器完成UNIQUEUNIQUE约束约束约束约束l l进入进入进入进入”设计表设计表设计表设计表“窗口,在要添加窗口,在要添加窗口,在要添加窗口,在要添加UNIQUEUNIQUE约束的行上单击右键,从快约束的行上单击右键,从快约束的行上单击右键,从快约束的行上单击右键,从快捷菜单中选择捷菜单中选择捷菜单中选择捷菜单中选择”属性属性属性属性“命令命令命令命令l l进入进入进入进入”索引索引索引索引/键键键键“选项卡,单击选项卡,单击选项卡,单击选项卡,单击”新建新建新建新建“按钮,在列名列表中选择约束按钮,在列名列表中选择约束按钮,在列名列表中选择约束按钮,在列名列表中选择约束列列列列l l选中选中选中选中”创建创建创建创建Unique“Unique“复选框,再选中复选框,再选中复选框,再选中复选框,再选中”索引索引索引索引“单选按钮,单击单选按钮,单击单选按钮,单击单选按钮,单击”关闭关闭关闭关闭“完成完成完成完成l l在在在在”索引索引索引索引/键键键键“选项卡中,选择相应的选项卡中,选择相应的选项卡中,选择相应的选项卡中,选择相应的UNIQUEUNIQUE约束名,单击约束名,单击约束名,单击约束名,单击”删除删除删除删除“按钮可删除约束按钮可删除约束按钮可删除约束按钮可删除约束l l删除删除删除删除UNIQUEUNIQUE约束约束约束约束ALTER TABLE ALTER TABLE DROP CONSTRAINT DROP CONSTRAINT,n,nl l添加添加添加添加UNIQUEUNIQUE约束约束约束约束ALTER TABLE ALTER TABLE ADD CONSTRAINT ADD CONSTRAINT UNIQUE CLUSTERED|NONCLUSTEREDUNIQUE CLUSTERED|NONCLUSTERED(,)16)2024/7/142024/7/142929第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l l使用使用使用使用CHECKCHECK约束约束约束约束l l对输入列或整个表中的值设置检查条件,以限制输入值,保证数据库对输入列或整个表中的值设置检查条件,以限制输入值,保证数据库对输入列或整个表中的值设置检查条件,以限制输入值,保证数据库对输入列或整个表中的值设置检查条件,以限制输入值,保证数据库的数据完整性的数据完整性的数据完整性的数据完整性l l与与与与Foreign KeyForeign Key约束的相同之处约束的相同之处约束的相同之处约束的相同之处l l通过检查数据值的合理性来实现数据完整性的维护通过检查数据值的合理性来实现数据完整性的维护通过检查数据值的合理性来实现数据完整性的维护通过检查数据值的合理性来实现数据完整性的维护l l与与与与Foreign KeyForeign Key约束的不同之处约束的不同之处约束的不同之处约束的不同之处l lForeign KeyForeign Key约束是从另一张表上获得合理数据约束是从另一张表上获得合理数据约束是从另一张表上获得合理数据约束是从另一张表上获得合理数据l lCHECKCHECK约束通过对一个逻辑表达式的结果进行判断来对数据进行约束通过对一个逻辑表达式的结果进行判断来对数据进行约束通过对一个逻辑表达式的结果进行判断来对数据进行约束通过对一个逻辑表达式的结果进行判断来对数据进行核查核查核查核查l l定义定义定义定义CHECKCHECK约束约束约束约束CONSTRAINT CONSTRAINT (逻辑表达式逻辑表达式逻辑表达式逻辑表达式)l l 添加添加添加添加CHECKCHECK约束约束约束约束返回值为返回值为TRUE TRUE 或或FALSEFALSE2024/7/142024/7/143030第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l l使用使用使用使用CHECKCHECK约束约束约束约束l l添加添加添加添加CHECKCHECK约束约束约束约束ALTER TABLE ALTER TABLE ADD ADD CHECK CHECK(逻辑表达式)(逻辑表达式)(逻辑表达式)(逻辑表达式)|WITH CHECK|WITH NOCHECKWITH CHECK|WITH NOCHECKADD CONSTRAINT ADD CONSTRAINT CHECK CHECK CHECK(逻辑表达式)(逻辑表达式)(逻辑表达式)(逻辑表达式),n,n,l l删除删除删除删除CHECKCHECK约束约束约束约束ALTER TABLE ALTER TABLE DROP CONSTRAINT CHECKDROP CONSTRAINT,n,nl l使使使使CHECKCHECK约束无效约束无效约束无效约束无效 ALTER TABLE ALTER TABLE CHECK|NOCHECK CONSTRAINT ALL|CHECK|NOCHECK CONSTRAINT ALL|,n,n2024/7/142024/7/143131第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l l例:使例:使例:使例:使authorsauthors表上的所有约束无效表上的所有约束无效表上的所有约束无效表上的所有约束无效USE pubsUSE pubsGOGOALTER TABLE authorsALTER TABLE authorsNOCHECK CONSTRAINT ALLNOCHECK CONSTRAINT ALLl l例:创建一个订货表例:创建一个订货表例:创建一个订货表例:创建一个订货表,其中定货量必须不小于其中定货量必须不小于其中定货量必须不小于其中定货量必须不小于1010create table orders(create table orders(order_id char(8),order_id char(8),p_id char(8),p_id char(8),p_name char(10),p_name char(10),quantity smallint,quantity smallint,constraint pk_order_id primary key(order_id),constraint pk_order_id primary key(order_id),constraint chk_quantity check(quantity=10)constraint chk_quantity check(quantity=10)2024/7/142024/7/143232第五讲数据库保护(数据完整性)第五讲数据库保护(数据完整性)l l使用企业管理器完成使用企业管理器完成使用企业管理器完成使用企业管理器完成CHECKCHECK约束约束约束约束l l进入进入进入进入”
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!