07-第7章-数据库完整性.ppt
《07-第7章-数据库完整性.ppt》由会员分享,可在线阅读,更多相关《07-第7章-数据库完整性.ppt(60页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Copy by spring第七章第七章数据库完整性学习要点数据库完整性概述SQL2005完整性实现触发器概述创建、修改、查看、删除使用说明AFTER触发器INSTEADOF触发器数据库完整性概述数据完整性数据完整性(DataIntegrity)定义指数据的准确性和一致性。目的 防止数据库中存在不符合语义规定的数据和防止因错误 信息的输入输出造成无效操作或错误信息分类实体完整性实体完整性:用于保证数据库中数据表的每一个特定实体的记 录都是唯一的。域完整性域完整性:用于保证指定列的数据具有正确的数据类型、格 式和有效的数据范围。参照完整参照完整性:确保同一键值在所有相关联表之间都一致。用户定义完
2、整性用户定义完整性:由用户自定义的不属于其他任何完 整性分类的特定业务规则。数据库完整性概述数据完整性数据完整性(DataIntegrity)为维护数据库的完整性,DBMS必须:提供定义完整性约束条件的机制提供完整性检查的方法违约处理学习要点完整性类型完整性类型实实现现技技术术实体完整性实体完整性UNIQUE约束、约束、PRIMARYKEY约束、约束、IDENTITY属性属性域完整性域完整性CHECK约束、约束、FOREIGNKEY约束、约束、DEFAULT定义、定义、NOTNULL定义、定义、默认默认对象、对象、规则规则对象对象参照完整性参照完整性FOREIGNKEY约束、约束、CHECK约
3、束、约束、触发器触发器用户定义完整性用户定义完整性CREATETABLE中的所有列级和表级约束、中的所有列级和表级约束、存存储过程储过程、触发器触发器完整性实现SQLServer2005完整性实现完整性实现DEFAULT约束 CHECK约束 PRIMARY KEY约束 UNIQUE约束 FOREIGN KEY约束 NOT NULL约束 标识列默认值规则 学习要点约束DEFAULT约束约束定义在用户未输入某些列的数据时,数据库系统为用户提供的默认值。(默认值必须与所约束列的数据类型相一致)是可以避免不允许为空值的数据错误 可以加快用户的输入速度 创建创建SSMS方式T-SQL方式约束列表使用SS
4、MS工具DEFAULT约束DEFAULT约束CREATETABELBookInfo(b_IDVARCHAR(16),b_DetailVARCHAR(100)DEFAULT暂无描述暂无描述)使用使用T-SQL定义(一)定义(一)DEFAULT约束CREATETABEL数据表名数据表名(列名列名数据类型数据类型CONSTRAIN约束名约束名DEFAULT默认值默认值,.)列级约束列级约束 示示例例NEXTCREATETABELBookInfo(b_DetailVARCHAR(100),CONSTRAINTde_DetailDEFAULT暂无描述暂无描述FORb_Detail)使用使用T-SQL定义
5、(二)定义(二)DEFAULT约束NEXTCREATETABEL数据表名数据表名(列名列名1数据类型,数据类型,CONSTRAIN约束名约束名DEFAULT默认值默认值FOR(列名列名,n),.)表级约束表级约束示示例例使用使用T-SQL定义定义(三)三)DEFAULT约束ALTERTABEL数据表名数据表名(ADDCONSTRAIN约束名约束名DEFAULT默认值默认值FOR(列名列名,n),.)修改表:添加约束修改表:添加约束ALTERTABELBookInfo(ADDCONSTRAINTde_DetailDEFAULT暂无描述暂无描述FORb_Detail)示示例例返回约束CHECK约束
6、约束定义限制用户输入数据的取值范围、格式等。一个列可以定义多个CHECK 约束。当往表中插入记录或修改相应列的值时,系统检查约束条件是否满足,若不满足则拒绝执行数据操作。创建创建SSMS方式T-SQL方式约束列表使用SSMS工具CHEECK约束CHECK约束CREATETABEL数据表名数据表名(列名列名数据类型数据类型CONSTRAIN约束名约束名CHECK(逻辑表达式逻辑表达式),.)CREATETABELBookInfo(b_QuantitySMALLINTCHECK(b_Quantity=1ANDb_Quantity=100),)使用使用T-SQL定义(一)定义(一)CHECK约束列级
7、约束列级约束 示示例例NEXT使用使用T-SQL定义(二、三)定义(二、三)CHECK约束返回CREATETABEL数据表名数据表名(列名列名1数据类型,数据类型,CONSTRAIN约束名约束名CHECK(逻辑表达式逻辑表达式),.)表级约束表级约束 ALTERTABEL数据表名数据表名(ADDCONSTRAIN约束名约束名CHECK(逻辑表达式逻辑表达式),.)修改表:添加约束修改表:添加约束约束PRIMARYKEY约束约束定义若是单列作为主键,可以在列级定义或表级定义若是列集合作为主键,必须在表级定义一个表只能有一个PRIMARY KEY约束,受约束的列或列集合的值不能为空和重复,必须能唯
8、一标识表中的行。定义了PRIMARY KEY 约束的列的列宽不能更改。创建创建SSMS方式T-SQL方式约束列表使用使用SSMS工具工具返回PRIMARY约束使用使用T-SQL定义(一)定义(一)NEXTPRIMARY约束CREATETABEL数据表名数据表名(列名列名数据类型数据类型CONSTRAIN约束名约束名PRIMARYKEY,.)CREATETABELBookInfo(b_IDVARCHAR(16)PRIMARYKEY,)列级约束列级约束 示示例例默认的约束名为:默认的约束名为:PK_PK_BookInfo BookInfo 使用使用T-SQL定义(二)定义(二)PRIMARY约束C
9、REATETABEL数据表名数据表名(列名列名1数据类型,数据类型,CONSTRAIN约束名约束名PRIMARYKEY(列名列名1,n),.)CREATETABELBorrowReturn(s_IDCHAR(8)NOTNULL,r_IDCHAR(8)NOTNULL,PRIMARYKEY(s_ID,r_ID)表级约束表级约束 示示例例组合键必须在表级定义组合键必须在表级定义默认的约束名为:默认的约束名为:PK_ PK_ BorrowReturn BorrowReturn NEXT使用使用T-SQL定义(三)定义(三)返回PRIMARY约束ALTERTABEL数据表名数据表名(ADDCONSTRA
10、IN约束名约束名PRIMARYKEY(列名列名,),.)ALTERTABLEBorrowReturnADDCONSTRAINTPK_BorrowReturnPRIMARYKEY(s_ID,r_ID)示示例例修改表:添加约束修改表:添加约束约束UNIQUE约束约束定义也称唯一值约束,确保在非主键列中不输入重复值。一个表可以定义多个UNIQUE 约束。在允许空值的列上保证唯一性时,应使用UNIQUE约束。当往表中插入记录或修改相应列的值时,系统检查是否有重复值,若有则拒绝执行数据操作。创建创建SSMS方式T-SQL方式约束列表使用使用SSMS工具工具返回UNIQUE约束使用使用T-SQL定义(一)
11、定义(一)NEXTUNIQUE约束CREATETABEL数据表名数据表名(列名列名数据类型数据类型CONSTRAIN约束名约束名UNIQUE,.)CREATETABELReaderType(rt_NameVARCHAR(10)UNIQUE,)列级约束列级约束 示示例例使用使用T-SQL定义(二、三)定义(二、三)UNIQUE约束返回CREATETABEL数据表名数据表名(列名列名1数据类型,数据类型,CONSTRAIN约束名约束名UNIQUE(列名列名1,n),.)表级约束表级约束 ALTERTABEL数据表名数据表名(ADDCONSTRAIN约束名约束名UNIQUE(列名列名1,n),.)修
12、改表:添加约束修改表:添加约束约束FOREIGNKEY约束约束定义也称为外键约束,用于强制实现参照完整性,建立两个表之间的关系。可以规定表中的某列参照同一个表或另外一个表中已有的PRIMARY KEY 约束或UNIQUE 约束的列。一个表可以有多个FOREIGN KEY 约束。创建SSMS方式T-SQL方式约束列表使用使用SSMS工具工具Step1NEXTFOREIGN KEY约束使用使用SSMS工具工具Step2NEXTFOREIGN KEY约束使用使用SSMS工具工具Step3NEXTFOREIGN KEY约束使用使用SSMS工具工具Step4返回FOREIGN KEY约束使用使用T-SQ
13、L定义(一)定义(一)示例CREATETABEL数据表名数据表名(列名列名数据类型数据类型CONSTRAIN约束名约束名FOREIGNKEYREFERENCES参照主键表参照主键表(参照列参照列)ONDELETECASCADE|ONUPDATECASCADE,.)列级约束列级约束 FOREIGN KEY约束 NO ACITON NO ACITON:默认选项。将引发错误,撤销对父表的删除(更新)操作:默认选项。将引发错误,撤销对父表的删除(更新)操作 CASCADECASCADE:当在主表删除(更新)一行,则自动将子表中的对应行删除(更新):当在主表删除(更新)一行,则自动将子表中的对应行删除(
14、更新)SET NULLSET NULL:删除(更新)父表的一行,子表相应行的外键值被置为:删除(更新)父表的一行,子表相应行的外键值被置为NULLNULL SET DEFAULTSET DEFAULT:删除(更新)父表的一行,子表相应行的外键值被置为删除(更新)父表的一行,子表相应行的外键值被置为 外键的默认值外键的默认值使用使用T-SQL定义(一)定义(一)FOREIGN KEY约束CREATETABELBookInfo(b_IDVARCHAR(16)PRIMARYKEY,b_NameVARCHAR(50)NOTNULL,bt_IDCHAR(10)REFERENCESBookType(bt_
15、ID),)示示例例NEXT使用使用T-SQL定义(二)定义(二)示例CREATETABEL数据表名数据表名(列名列名1数据类型,数据类型,CONSTRAIN约束名约束名FOREIGNKEY(列名列名)REFERENCES参照主键表参照主键表(参照列参照列)ONDELETECASCADE|ONUPDATECASCADE,.)表级约束表级约束 FOREIGN KEY约束使用使用T-SQL定义(二)定义(二)NEXTFOREIGN KEY约束CREATETABLEBorrowReturn(br_IDCHAR(6)PRIMARYKEY,s_IDCHAR(8)REFERENCESNOTNULL,r_ID
16、CHAR(8)REFERENCESNOTNULL,FOREIGNKEY(s_ID)REFERENCESBookStore(s_ID),FOREIGNKEY(r_ID)REFERENCESReaderInfo(r_ID)示示例例使用使用T-SQL定义(三)定义(三)UNIQUE约束返回ALTERTABEL数据表名数据表名(ADDCONSTRAIN约束名约束名FOREIGNKEY(列名列名)REFERENCES参照主键表参照主键表(参照列参照列)ONDELETECASCADE|ONUPDATECASCADE,.)修改表:添加约束修改表:添加约束ALTERTABELBookInfo(ADDFOREI
17、GNKEY(bt_ID)REFERENCESBookType(bt_ID)ONDELETECASCADEONUPDATECASCADE,)示示例例约束NOTNULL约束约束实质表中列可以定义为允许或不允许空值。默认情况下,创建表列允许空值。一个列中出现NULL 值,意味着用户还没有为该列输入值。若设置为NOT NULL,用户没有输入该列值,则引发错误。示例示例SSMS方式T-SQL方式约束列表使用使用SSMS工具工具返回NOT NULL约束使用使用T-SQL定义定义NOTNULL约束CREATETABEL数据表名数据表名(列名列名数据类型数据类型CONSTRAIN约束名约束名NULL|NOTN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 07 数据库 完整性
限制150内