数据完整性及实现.ppt
第5 章 数据完整性及实现本章重点:本章重点:数据完整性数据完整性数据完整性实现数据完整性实现默认值默认值5.1 数据完整性数据完整性v5.1.1 5.1.1 数据完整性概述数据完整性概述v5.1.2 5.1.2 数据完整性的分类数据完整性的分类5.1.1 5.1.1 数据完整性概述数据完整性概述 数据完整性(数据完整性(Data IntegrityData Integrity)是指存储在数据库中的)是指存储在数据库中的数据的一致性、准确性和可靠度。换言之,实施数据完整性的数据的一致性、准确性和可靠度。换言之,实施数据完整性的目的就是为了确保数据库中数据的质量。目的就是为了确保数据库中数据的质量。数据完整性的设计是评估数据库设计好坏的一个重要指标。数据完整性的设计是评估数据库设计好坏的一个重要指标。在在SQL ServerSQL Server系统中,在设计数据库和设计表时,设计者就要系统中,在设计数据库和设计表时,设计者就要确认每列对应哪些数据是正确的,使用什么方法可以不会有错确认每列对应哪些数据是正确的,使用什么方法可以不会有错误的数据存到列中。数据完整性为我们提供了这样的保障,其误的数据存到列中。数据完整性为我们提供了这样的保障,其类型有类型有4 4种。种。5.1.1 5.1.1 数据完整性概述数据完整性概述5.1.2 数据完整性的分类 1.1.域完整性(域完整性(Domain IntegrityDomain Integrity)要求存入表中指)要求存入表中指定列的数据一定有效。域完整性通常是用来检验某列的定列的数据一定有效。域完整性通常是用来检验某列的数据的有效性。数据的有效性。2.2.实体完整性(实体完整性(Entity IntegrityEntity Integrity)要求表中所有)要求表中所有行有一个标识符(主键),其值不能空值(行有一个标识符(主键),其值不能空值(NULLNULL),且),且能唯一地标识对应的行。能唯一地标识对应的行。3.3.参照完整性(参照完整性(Referential IntegrityReferential Integrity)是指添加、)是指添加、修改或删除数据行时,两个表的主键和外键的数据的一修改或删除数据行时,两个表的主键和外键的数据的一致性。致性。4.4.用户自定义完整性(用户自定义完整性(User-Defined IntegrityUser-Defined Integrity)是用户自行定义的,不属于其它完整性的所有规则。是用户自行定义的,不属于其它完整性的所有规则。5.1.2 5.1.2 数据完整性的分类数据完整性的分类 5.2 数据完整性实现数据完整性实现v5.2.1 5.2.1 域完整性的实现域完整性的实现v5.2.2 5.2.2 实体完整性的实现实体完整性的实现v5.2.3 5.2.3 参照完整性的实现参照完整性的实现5.2.1 5.2.1 域完整性的实现域完整性的实现1.1.利用企业管理器创建、删除利用企业管理器创建、删除CHECK CHECK 约束约束操作步骤如下:操作步骤如下:(1 1)启动)启动SQL ServerSQL Server企业管理器。企业管理器。(2 2)展开)展开“SQL ServerSQL Server组组”,展开,展开“数据库数据库”,选择使用的数据库,选择使用的数据库,再展开再展开“表表”。(3 3)选择创建约束的表,单击鼠标右键,打开快捷菜单。)选择创建约束的表,单击鼠标右键,打开快捷菜单。(4 4)选择)选择“设计表设计表”菜单命令。菜单命令。(5 5)单击鼠标右键,打开快捷菜单。)单击鼠标右键,打开快捷菜单。(6 6)选择)选择“CHECK CHECK 约束约束”菜单命令,进入菜单命令,进入“属性属性”窗口。窗口。(7 7)选择)选择“CHECKCHECK约束约束”选项卡,命名约束名,输入约束表达式。选项卡,命名约束名,输入约束表达式。5.2.1 5.2.1 域完整性的实现域完整性的实现2.2.利用利用CREATECREATE命令创建命令创建CHECKCHECK约束约束SQLSQL命令格式:命令格式:CREATE CREATE .(Column_nameColumn_name DatatypeDatatype NOT NULL|NULL NOT NULL|NULL DEFAULT DEFAULT Constraint_ExpressionConstraint_Expression Check_nameCheck_name CHECK CHECK(Logical_ExpressionLogical_Expression)命令功能:命令功能:创建一个表,并定义数据完整性。创建一个表,并定义数据完整性。ExampleExamplevCREATE TABLE SC(Sno CHAR(6)NOT NULL FOREIGN KEY REFERENCES S(Sno),Cno CHAR(6)NOT NULL,Grade Smallint default 0,CONSTRAINT k1 CHECK(Grade BETWEEN 0 AND 100),PRIMARY KEY(Sno,Cno),FOREIGN KEY(Cno)REFERENCES C(Cno)CREATE TABLE SC(Sno CHAR(6)NOT NULL,Cno CHAR(6)NOT NULL,Grade Smallint CHECK(Grade BETWEEN 0 AND 100),CONSTRAINT pk PRIMARY KEY(Sno,Cno),FOREIGN KEY(Sno)REFERENCES S(Sno),FOREIGN KEY(Cno)REFERENCES C(Cno)5.2.1 5.2.1 域完整性的实现域完整性的实现,命令改、删除命令改、删除checkcheck3.3.利用利用SQLSQL命令修改命令修改CHECKCHECK约束约束SQLSQL命令格式:命令格式:ALTER TABLE ALTER TABLE ADD CONSTRAINT ADD CONSTRAINT Check_nameCheck_name CHECK CHECK (Logical_expressionLogical_expression)命令功能:修改表结构,并可以定义数据完整性。命令功能:修改表结构,并可以定义数据完整性。4.4.利用利用SQLSQL语句删除语句删除CHECKCHECK约束约束SQLSQL命令格式:命令格式:ALTER TABLE ALTER TABLE DROP CONSTRAINT DROP CONSTRAINT Check_nameCheck_name 命令功能:命令功能:修改表结构,并可以删除数据完整性。修改表结构,并可以删除数据完整性。ALTER TABLE 表名 ADD 新列名 数据类型 完整性约束 DROP 完整性约束名 DROP COLUMN 列名 ALTER COLUMN 列名 数据类型新增的属性不能定义为新增的属性不能定义为“NOT NULL”因为关系的原因为关系的原来元组在新列上的值取空值。来元组在新列上的值取空值。语句例子,可以写在一行中语句例子,可以写在一行中vALTER TABLE 学生学生 ADD 入学入学时间 DatetimevALTER TABLE 学生学生 ALTER COLUMN 出生日期出生日期 DatetimevALTER TABLE 学生学生 DROP COLUMN 所属系所属系语句例子语句例子 DROP TABLEDROP TABLE语句语句删除基本表删除基本表DROP TABLE语句删除基本表当某个表不再需要时,可以删除。一般格式:DROP TABLE 表名例:DROP TABLE S 5.2.2 5.2.2 实体完整性的实现实体完整性的实现1.1.利用企业管理器创建利用企业管理器创建PRIMARY KEYPRIMARY KEY约束约束 操作步骤如下:操作步骤如下:(1 1)启动)启动SQL ServerSQL Server企业管理器。企业管理器。(2 2)展开)展开“SQL ServerSQL Server组组”,展开,展开“数据库数据库”,选择使用的数,选择使用的数据库,再展开据库,再展开“表表”。(3 3)选择要创建约束的表,单击鼠标右键,打开快捷菜单。)选择要创建约束的表,单击鼠标右键,打开快捷菜单。(4 4)选择)选择“设计表设计表”菜单命令,进入菜单命令,进入“设计表设计表”窗口。窗口。(5 5)选择要创建约束的列(学号),单击鼠标右键,打开快捷)选择要创建约束的列(学号),单击鼠标右键,打开快捷菜单。菜单。(6 6)选择)选择“索引索引/键键”菜单命令,进入菜单命令,进入“属性属性”窗口。窗口。(7 7)选择)选择“索引索引/键键”选项卡,首先,单击选项卡,首先,单击“新建新建”按钮,然按钮,然后,命名索引名,选择索引列,及索引顺序,选择索引文件组,最后,命名索引名,选择索引列,及索引顺序,选择索引文件组,最后,单击后,单击“关闭关闭”按钮,返回按钮,返回“设计表设计表”窗口。窗口。5.2.2 5.2.2 实体完整性的实现实体完整性的实现2.2.利用企业管理器创建利用企业管理器创建UNIQUEUNIQUE约束约束 操作步骤如下:操作步骤如下:(1 1)启动)启动SQL ServerSQL Server企业管理器。企业管理器。(2 2)展开)展开“SQL ServerSQL Server组组”,展开,展开“数据库数据库”,选择使用的数据,选择使用的数据库,再展开库,再展开“表表”。(3 3)选择要创建约束的表(,单击鼠标右键,打开快捷菜单。)选择要创建约束的表(,单击鼠标右键,打开快捷菜单。(4 4)选择)选择“设计表设计表”菜单命令,进入菜单命令,进入“设计表设计表”窗口。窗口。(5 5)选择要删除约束的列,单击鼠标右键,打开快捷菜单。)选择要删除约束的列,单击鼠标右键,打开快捷菜单。(6 6)选择)选择“索引索引/键键”菜单命令,进入菜单命令,进入“属性属性”窗口。窗口。(7 7)选择)选择“索引索引/键键”选项卡,首先,单击选项卡,首先,单击“新建新建”按钮,然后,按钮,然后,命名索引名,选择索引列及索引顺序,选择索引文件组,选择创建命名索引名,选择索引列及索引顺序,选择索引文件组,选择创建UNIQUEUNIQUE前的复选框,最后,单击前的复选框,最后,单击“关闭关闭”按钮,返回按钮,返回“设计表设计表”窗口。窗口。5.2.2 5.2.2 实体完整性的实现实体完整性的实现3.3.利用企业管理器删除利用企业管理器删除PRIMARY KEYPRIMARY KEY约束、删除约束、删除UNIQUEUNIQUE约束约束操作步骤如下:操作步骤如下:(1 1)启动)启动SQL ServerSQL Server企业管理器。企业管理器。(2 2)展开)展开“SQL ServerSQL Server组组”,展开,展开“数据库数据库”,选择使用的数,选择使用的数据库,再展开据库,再展开“表表”。(3 3)选择要创建约束的表,单击鼠标右键,打开快捷菜单。)选择要创建约束的表,单击鼠标右键,打开快捷菜单。(4 4)选择)选择“设计表设计表”菜单命令,进入菜单命令,进入“设计表设计表”窗口。窗口。(5 5)选择要删除约束的列,单击鼠标右键,打开快捷菜单。)选择要删除约束的列,单击鼠标右键,打开快捷菜单。(6 6)选择)选择“索引索引/键键”菜单命令,进入菜单命令,进入“属性属性”窗口。窗口。(7 7)首先,选择)首先,选择“索引索引/键键”选项卡,然后,单击选项卡,然后,单击“删除删除”按钮,按钮,最后在单击最后在单击“关闭关闭”按钮,返回按钮,返回“设计表设计表”窗口。窗口。5.2.2 5.2.2 实体完整性的实现实体完整性的实现 修改主键修改主键5.利用利用SQL语句创建、删除语句创建、删除PRIMARY KEY和和UNIQUE约束约束SQL命令格式:命令格式:ALTER TABLE ALTER TABLE DROP CONSTRAINT DROP CONSTRAINT Check_nameCheck_name 命令功能:修改表结构,并删除数据完整性。命令功能:修改表结构,并删除数据完整性。6.利用利用SQL语句修改语句修改PRIMARY KEY约束约束SQL命令格式:命令格式:ALTER TABLE ALTER TABLE Table_nameable_name ADD ADD CONSTRAINT CONSTRAINT constraint_nameconstraint_name PRIMARY PRIMARY KEY KEY CLUSTERED|NONCLUSTERED CLUSTERED|NONCLUSTERED (column ,.n )(column ,.n )命令功能:修改表结构,并可增加数据完整性。命令功能:修改表结构,并可增加数据完整性。vALTER TABLE teststu ADD CONSTRAINT firstcheck CHECK (testsex=女女 or testsex=男男 )5.2.3 5.2.3 参照完整性的实现参照完整性的实现 利用菜单方利用菜单方式建关系图式建关系图 1.1.利用企业管理器定义表间的参照完整性利用企业管理器定义表间的参照完整性 操作步骤如下:操作步骤如下:(1 1)启动)启动SQL ServerSQL Server企业管理器。企业管理器。(2 2)在)在“控制台根目录控制台根目录”窗口,展开窗口,展开“SQL ServerSQL Server组组”,展开展开“数据库数据库”,选择使用的数据库,再展开,选择使用的数据库,再展开“表表”。(3 3)在)在“控制台根目录控制台根目录”窗口,选择窗口,选择“表表”,单击鼠标右,单击鼠标右键,打开快捷菜单。键,打开快捷菜单。(4 4)在快捷菜单中,选择)在快捷菜单中,选择“新建表新建表”菜单命令,进入菜单命令,进入“设设计表计表”窗口。窗口。(5 5)在)在“设计表设计表”窗口,设计表的结构。窗口,设计表的结构。5.2.3 5.2.3 参照完整性的实现参照完整性的实现 (6 6)重复()重复(3 3)-(5 5)的操作,在)的操作,在“设计表设计表”窗口,设计表的窗口,设计表的结构。结构。(7 7)在)在“控制台根目录控制台根目录”窗口,选择窗口,选择“关系图关系图”,单击鼠标右,单击鼠标右键,打开快捷菜单。键,打开快捷菜单。(8 8)在快捷菜单中,选择)在快捷菜单中,选择“新建数据库关系图新建数据库关系图”菜单命令,进菜单命令,进入入“新关系图新关系图”窗口,并打开窗口,并打开“创建数据库关系的向导创建数据库关系的向导”。(9 9)在)在“创建数据库关系的向导创建数据库关系的向导”各窗口,依次添加要建立关各窗口,依次添加要建立关系的表,返回系的表,返回“新关系图新关系图”窗口。窗口。(1010)在)在“新关系图新关系图”窗口,首先,选择外键列,将其拖到主窗口,首先,选择外键列,将其拖到主键列处,进入键列处,进入“创建关系创建关系”窗口。窗口。(1111)在)在“创建关系创建关系”窗口,首先,确定窗口,首先,确定“关系名关系名”,然后,然后,选择其它参数,最后,单击选择其它参数,最后,单击“确定确定”按钮,返回按钮,返回“新关系图新关系图”窗口,窗口,结束创建参照完整性的操作。结束创建参照完整性的操作。5.2.3 5.2.3 参照完整性的实现参照完整性的实现 语句建关系语句建关系2.2.利用利用SQLSQL语句创建参照完整性语句创建参照完整性SQLSQL命令格式:命令格式:CREATE TABLE CREATE TABLE (1 类型类型 (长度长度)缺省值缺省值列级约束列级约束 ,2 数据类型数据类型 缺省值缺省值列级约束列级约束.,UNIQUEUNIQUE(列名(列名,列名,列名.),PRIMARY KEYPRIMARY KEY(列名(列名,列名,列名),FOREIGN KEY FOREIGN KEY(列名(列名,列名,列名)REFERENCES REFERENCES 表名(列名表名(列名,列名,列名),CKECK(CKECK(条件条件)命令功能:创建表结构,并创建数据完整性。命令功能:创建表结构,并创建数据完整性。5.2.3 5.2.3 参照完整性的实现参照完整性的实现3.3.利用利用SQLSQL语句修改参照完整性语句修改参照完整性SQLSQL命令格式:命令格式:ALTER TABLE ALTER TABLE ADD ADD CONSTRAINT CONSTRAINT Constraint_nameConstraint_name FOREIGN KEY FOREIGN KEY(Column ,.n )(Column ,.n )命令功能:修改数据完整性。命令功能:修改数据完整性。5.3 默认值默认值v5.3.1 5.3.1 创建修改默认值约束创建修改默认值约束v5.3.2 5.3.2 修改默认值约束修改默认值约束5.3.1 5.3.1 创建默认值约束创建默认值约束创建默认值约束创建默认值约束SQLSQL命令格式:命令格式:CREATE TABLE CREATE TABLE CONSTRAINT CONSTRAINT constraint_nameconstraint_name DEFAULT DEFAULT constraint_expressionconstraint_expression 命令功能:创建表,并创建默认值约束。命令功能:创建表,并创建默认值约束。vCREATE TABLE table4test2v(col1 char(10)default 2015)5.3.2 5.3.2 修改默认值约束修改默认值约束修改默认值约束修改默认值约束SQLSQL命令格式:命令格式:ALTER TABLE ALTER TABLE ADD ADD CONSTRAINT CONSTRAINT Constraint_nameConstraint_name DEFAULT DEFAULT constraint_expressionconstraint_expression 命令功能:修改表结构,并创建默认值约束。命令功能:修改表结构,并创建默认值约束。ALTER TABLE teststuADD CONSTRAINT coldefaultdefault 2013 for testname添加新列,有默认值添加新列,有默认值vALTER TABLE teststu v add testname2 char(10)vdefault 东北师范大学东北师范大学