《《讲数据完整性》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《讲数据完整性》PPT课件.ppt(61页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、安徽新华电脑专修学院安徽新华电脑专修学院 第九讲第九讲 数据完整性数据完整性安徽新华电脑专修学院安徽新华电脑专修学院引入 数据完整性(Data Integrity)是指存储在数据库中的数据,应该保持一致性和可靠性。在输入数据时,由于不可避免的种种原因,会发生输入无效或错误信息。如何保持输入的数据符合规定,是数据库系统,尤其是多用户的关系数据库系统首要关注的问题。安徽新华电脑专修学院安徽新华电脑专修学院安徽新华电脑专修学院安徽新华电脑专修学院学习目标默认(Default)规则(Rull)约束(Constraint)学习完本课程,您应该能够:学习完本课程,您应该能够:安徽新华电脑专修学院安徽新华电
2、脑专修学院安徽新华电脑专修学院安徽新华电脑专修学院知识重、难点分析重点:重点:l默认(Default)l规则(Rull)和结构的修改和结构的修改难点:难点:l 约束(Constraint)安徽新华电脑专修学院安徽新华电脑专修学院安徽新华电脑专修学院安徽新华电脑专修学院数据完整性数据完整性 数据完整性是用来确保数据库中的数据的正确性和可靠性。l实体完整性:实体完整性:实体完整性是为了保证表中的数据唯一,实体完整性可由主键来实现。表中的主键在所有记录上的取值必须唯一。l域完整性:域完整性:域完整性可以保证数据的取值在有效的范围内。l参照完整性:参照完整性:参照完整性用于确保相关联的表间的数据应保持
3、一致,避免因一个表的记录修改,造成另一个表的内容变为无效的值。一般来说,参照完整性是通过外键和主键来维护的。l自定义完整性:自定义完整性:由用户自行定义的,不同于前面种的完整性,也可以说一种强制数据定义。安徽新华电脑专修学院安徽新华电脑专修学院 默认是一种数据库对象,它与默认值约束的功能一样。若用户输入记录时,在没有给出具体的数据的字段中,系统会自动插入一个数据。l 默认值用来向无值的列(字段)提供一个预先指定的值。l 和规则一样,默认在创建后,必须和某一列绑定才能生效。任务一任务一 默认默认安徽新华电脑专修学院安徽新华电脑专修学院 1.1 创建默认创建默认1、使用企业管理器创建默认使用企业管
4、理器创建默认安徽新华电脑专修学院安徽新华电脑专修学院1、使用企业管理器创建默认使用企业管理器创建默认安徽新华电脑专修学院安徽新华电脑专修学院 1.1 1.1 创建默认创建默认2 2、使用、使用create defaultcreate default语句创建默认语句创建默认 create default as 功能:l 创建称为默认值的对象。l 默认值定义是限制列数据的首选,也是标准的方法,因为定义和表存储在一起,当除去表时,将自动除去默认值定义。l 常量表达式只包含常量值的表达式,不能包含任何或其他数据库对象的名称。可以使用任何常量、内建函数或数学表达式。例:演示创建默认的使用。use 学生管
5、理数据库 go create default time_default as getdate()安徽新华电脑专修学院安徽新华电脑专修学院查看缺省值查看缺省值安徽新华电脑专修学院安徽新华电脑专修学院查看缺省值查看缺省值安徽新华电脑专修学院安徽新华电脑专修学院用存储过程Sp_helptext 查看缺省值例:查看缺省值todayexec sp_helptext today运行结果如下-Text-create default dp_date as getdate()安徽新华电脑专修学院安徽新华电脑专修学院 1.2 绑定默认绑定默认1、使用企业管理器绑定默认使用企业管理器绑定默认安徽新华电脑专修学院安徽
6、新华电脑专修学院绑定列安徽新华电脑专修学院安徽新华电脑专修学院 1.21.2 绑定默认绑定默认2 2、使用、使用sp_bindefaultsp_bindefault语句绑定默认语句绑定默认 sp_bindefault,例:演示绑定默认的使用。use 学生管理数据库 go sp_bindefault time_default,学生表.入学年份安徽新华电脑专修学院安徽新华电脑专修学院1.3 1.3 解除绑定解除绑定n 使用企业管理器解除绑定使用企业管理器解除绑定 n 使用使用sp_unbindefaultsp_unbindefault解除绑定解除绑定 sp_unbindefault 例:演示解除绑
7、定的使用 use 学生课程数据库 go sp_unbindefault 学生表.入学年份 安徽新华电脑专修学院安徽新华电脑专修学院1.4 1.4 删除默认删除默认n 使用企业管理器删除默认使用企业管理器删除默认n 使用使用drop defaultdrop default删除默认删除默认 drop default 例:演示删除默认的使用。use 学生课程数据库 go drop default time_default安徽新华电脑专修学院安徽新华电脑专修学院 注注:默认的使用限制默认的使用限制l 通过default子句为列(字段)定义默认值或通过sp_unbindefault绑定默认,两者只能选择
8、一种方式。l 默认只能用来设置常量或者SQL Server 函数值。l 每列(字段)只能与一个默认绑定。l 确保默认的数据类型与其绑定列的数据类型一致。l 确保默认值与该列的规则一致。l 如果默认已经与某列绑定,那么就不能删除它,除非在删除之前,已解除默认和列或数据类型的所有绑定关系。安徽新华电脑专修学院安徽新华电脑专修学院 规则就是数据库中,对存储在数据库中表的列(字段)的规定和限制。l 规则是单独存储的独立的数据库对象,规则与作用的表是相互独立的,即表的删除修改,不会对与之相连的规则产生影响。规则和约束可以同时使用表的列,可以有一个规则及多个(check)约束规则。l 规则提供了一种加强列
9、(字段)域约束的机制。l 规则要在insert和update语句之前给出。任务二任务二 规则规则安徽新华电脑专修学院安徽新华电脑专修学院 2.1 创建规则创建规则1、使用企业管理器创建规则、使用企业管理器创建规则安徽新华电脑专修学院安徽新华电脑专修学院 2、使用使用create rulecreate rule语句创建规则语句创建规则 格式:格式:create rule rule_name as condition_expression 说明:说明:l rule_name:新规则的名称。l condition_expression:定义规则的条件。规则可以是where子句中任何有效的表达式,并且
10、可以包含诸如算术运算符,关系运算符和in、like、between之类的元素。l 规则不能引用列或其他数据库对象.可以包含不引用数据库对象的内置函数。l condition_expression包含一个变量,每个局部变量的前面都有一个符号,该表达式引用通过update或insert语句输入的值。l 在创建规则时,可使用任何名称或符号表示值,但第一个字符必须是符号。安徽新华电脑专修学院安徽新华电脑专修学院例:创建考试成绩规则score_rule。use 学生课程数据库 go create rule cj_scope as cj_scope between 0 and 100例:创建雇佣日期规则h
11、ire_date_rule。create rule hire_date_rule as hire_date=1980-01-01 and hire_date=1980-01-01 and hire_date=getdate()安徽新华电脑专修学院安徽新华电脑专修学院 2.2 2.2 绑定规则绑定规则n 使用企业管理器绑定规则使用企业管理器绑定规则 n 使用使用sp_bindrulesp_bindrule绑定规则绑定规则 sp_bindrule,l 将规则绑定到列(字段)。l 绑定规则时,必须使用引号作为分隔符,参数中的圆点(.)将传递给sp_bindrule。例:演示绑定规则的使用。use 学
12、生管理数据库 go sp_bindrule score_rule,成绩表.成绩 go insert 成绩表 values(200203002,c801,125)安徽新华电脑专修学院安徽新华电脑专修学院规则绑定到用户的自定义类型规则绑定到表的列安徽新华电脑专修学院安徽新华电脑专修学院2.3 2.3 解除绑定解除绑定n 使用企业管理器解除绑定使用企业管理器解除绑定n 使用使用sp_unbindrulesp_unbindrule解除绑定解除绑定 sp_unbindrule 例:演示解除绑定的使用。use 学生课程数据库 go sp_unbindrule 成绩表.成绩安徽新华电脑专修学院安徽新华电脑专
13、修学院2.42.4删除规则删除规则n 使用企业管理器删除规则n 使用drop rule删除规则 drop rule 例:演示删除规则的使用。use 学生课程数据库 go drop rule score_rule 安徽新华电脑专修学院安徽新华电脑专修学院 注注:使用规则的限制条件使用规则的限制条件l 规则只能处理常量、函数,不能用来查找表,也不能用来比较表中的列。l 表中的每列只能与一条规则绑定。如果某列已经绑定了一条规则,而又为该列绑定了一条新规则,那么旧规则将被新规则代替。l 如果规则与某列绑定,那么规则不能被直接删除,须先解除规则与所有的列和数据库类型绑定关系,然后才能用drop rule
14、命令删除。l 向系统中大量拷贝数据时,规则不起作用。l 在使用规则时,要确保规则中的值与其绑定列的数据类型相一致。安徽新华电脑专修学院安徽新华电脑专修学院 任务三任务三 约束约束安徽新华电脑专修学院安徽新华电脑专修学院约束类型约束类型功功 能能 说说 明明primary key保证主键的实体完整性主键的值不能有重复值,且不为null。使用时,往往在其上建立索引,以提高数据库的性能。unique保证非主键的实体完整性非主键(即非主关键字)的值不能有重复值。foreign key保证参照完整性一个表中的值,须参照另外一个表中的主键值。check域完整性字段可以取值的范围。default域完整性为字
15、段赋予特定的值。Not null实体完整性非空约束。约束限制了用户可能输入到表或字段中的值。安徽新华电脑专修学院安徽新华电脑专修学院 3.1 3.1 约束的定义约束的定义 在SQL Server系统中,约束的定义主要是通过create table语句或alter table语句来实现的。l 使用create table语句,是在建立新表的同时定义了约束。l 使用alter table语句,是向已经存在的表中添加约束。l 约束可以是字段级约束,也可以是表级约束。字段级约束是把约束放在某个字段列上的,且约束仅对该字段列起作用,表级约束是把约束放在表中的多个字段列上。安徽新华电脑专修学院安徽新华电脑
16、专修学院 1 1、使用、使用create tablecreate table语句创建约束语句创建约束 create table table_name (column_name data_type default constraint_expression :=constraint constraint_name null|not null|primary key|unique clustered|nonclustered|foreign key references ref_table (ref_column)|check not for replication ,n )安徽新华电脑专修学院安
17、徽新华电脑专修学院 2 2、使用、使用alter tablealter table语句创建约束语句创建约束 alter table table_name add :=constraint constraint_name null|not null|primary key|unique|foreign key references ref_table (ref_column)|default constant_expression|check(logical_expression),n|drop constraint constraint_name|column column ,n 安徽新华电脑
18、专修学院安徽新华电脑专修学院 3.2 primary key 3.2 primary key 约束约束 在关系数据库中,每个表都有一个能够唯一地标识表中每一行(实体)的字段,即主码或称为主关键字。l 数据库系统是通过主码来保证表的实体完整性。l primary key 约束,反映了定义为主码的字段的取值不能重复,且不能取null值。l 创建primary key约束时,SQL Server会自动创建一个唯一的簇索引。安徽新华电脑专修学院安徽新华电脑专修学院1、使用企业管理器创建、使用企业管理器创建primary key约束约束安徽新华电脑专修学院安徽新华电脑专修学院 2、使用查询分析器创建、使
19、用查询分析器创建primary key约束约束例:创建列级主键约束,无约束名。例:创建列级主键约束,无约束名。use 学生管理数据库 go create table 学生表1 (学号 varchar(9)not null primary key,姓名 varchar(8),性别 varchar(2),年龄 tinyint,所在院系 varchar(10),班级名 varchar(10),入学年份 datetime )安徽新华电脑专修学院安徽新华电脑专修学院 例:创建列级主键约束,有约束名。例:创建列级主键约束,有约束名。use 学生管理数据库 go create table 学生表2 (学号
20、varchar(9)constraint pk_学号 not null primary key,姓名 varchar(8),性别 varchar(2),年龄 tinyint,所在院系 varchar(10),班级名 varchar(10),入学年份 datetime,)2、使用查询分析器创建、使用查询分析器创建primary key约束约束安徽新华电脑专修学院安徽新华电脑专修学院 例:创建列级主键约束,有约束名。例:创建列级主键约束,有约束名。use 学生管理数据库 go create table 学生表2 (学号 varchar(9),姓名 varchar(8),性别 varchar(2),
21、年龄 tinyint,所在院系 varchar(10),班级名 varchar(10),入学年份 datetime,constraint pk_学号 not null primary key(学号)2、使用查询分析器创建、使用查询分析器创建primary key约束约束安徽新华电脑专修学院安徽新华电脑专修学院 例:向表添加列级主键约束,有约束名。例:向表添加列级主键约束,有约束名。use 学生管理数据库 go alter table 学生表2 add constraint pk_学号 primary key(学号)3、使用查询分析器创建、使用查询分析器创建primary key约束约束安徽新华
22、电脑专修学院安徽新华电脑专修学院 3.3 unique3.3 unique约束约束 unique约束对某个字段列提供了实体完整性。l unique约束主要用在非主键的列上限制数据的唯一。l按照unique约束的要求,在一个表中不允许任意两行在被约束的字段列上有相同的非空值。l一个表可以有多个unique约束。安徽新华电脑专修学院安徽新华电脑专修学院1、使用企业管理器创建、使用企业管理器创建unique约束约束安徽新华电脑专修学院安徽新华电脑专修学院例:创建列级唯一约束,无约束名。例:创建列级唯一约束,无约束名。use 学生管理数据库gocreate table 课程表3 (课程号 varcha
23、r(4)not null primary key,课程名 varchar(12)unique,先修课 varchar(4),)2、使用查询分析器创建、使用查询分析器创建unique约束约束安徽新华电脑专修学院安徽新华电脑专修学院例:创建列级唯一约束,有约束名。例:创建列级唯一约束,有约束名。use 学生管理数据库 go create table 课程表3 (课程号 varchar(4)not null primary key,课程名 varchar(12),先修课 varchar(4),constraint u_课程名 unique(课程名)2、使用查询分析器创建、使用查询分析器创建uniqu
24、e约束约束安徽新华电脑专修学院安徽新华电脑专修学院 例:向表添加列级唯一约束,有约束名。例:向表添加列级唯一约束,有约束名。use 学生管理数据库 go alter table 课程表3 add constraint u_课程名 unique(课程名)3、使用查询分析器创建、使用查询分析器创建unique约束约束安徽新华电脑专修学院安徽新华电脑专修学院 3.4 foreign key 3.4 foreign key 约束约束 外码(外关键字)是说明某列的取值必须参照另外表的主码值。一个外码是一个表的主码并且是另一个表的外码。l 外码提供了两个表之间的连接。l 外码通过强制外码字段的取值必须是另
25、外表中主码字段的有效值,来实施参照完整性。安徽新华电脑专修学院安徽新华电脑专修学院 1、使用企业管理器创建、使用企业管理器创建foreign key约束约束安徽新华电脑专修学院安徽新华电脑专修学院 use 学生管理数据 gocreate table 成绩表(学号 varchar(9)constraint fk_学号 not null foreign key references 学生表(学号),课程号 varchar(4)constraint fk_课程号 not null foreign key references 课程表(课程号),constraint pk_学号_课程号 primary
26、 key(学号,课程号),成绩 tinyint)2、使用查询分析器创建、使用查询分析器创建foreign key约束约束安徽新华电脑专修学院安徽新华电脑专修学院例:向表添加列级外键约束,有约束名。例:向表添加列级外键约束,有约束名。use 学生管理数据库 go alter table 成绩表1 with check add constraint fk_课程号1 foreign key(课程号)references 课程表1(课程号)2、使用查询分析器创建、使用查询分析器创建foreign key约束约束安徽新华电脑专修学院安徽新华电脑专修学院3.5 default 约束约束 当用户没有为定义为
27、default约束的字段输入数据时,由default 约束提供默认的值。例:use 学生数据库gocreate table 成绩表 (学号 varchar(9)constraint fk_学号 not null foreign key references 学生表(学号),课程号 varchar(4)constraint fk_课程号 not null foreign key references 课程表(课程号),constraint pk_学号_课程号 primary key(学号,课程号),成绩 tinyintconstraint d_成绩 default 0 )安徽新华电脑专修学院安徽
28、新华电脑专修学院3.6 check3.6 check约束约束 check约束限制了字段的取值范围。l 与规则相似,check约束限制了向特定的字段列输入数据的类型。l 表级定义的check约束可以对多个字段列进行核查。安徽新华电脑专修学院安徽新华电脑专修学院1、使用企业管理器创建、使用企业管理器创建check约束约束安徽新华电脑专修学院安徽新华电脑专修学院例:创建列级核查约束,有约束名。例:创建列级核查约束,有约束名。use 学生管理数据库gocreate table 成绩表 (学号 varchar(9)constraint fk_学号 not null foreign key referen
29、ces 学生表(学号),课程号 varchar(4)constraint fk_课程号 not null foreign key references 课程表(课程号),constraint pk_学号_课程号 primary key(学号,课程号),成绩 tinyint constraint d_成绩 default 0 constraint c_成绩 check(成绩 between 0 and 100)2、使用查询分析器创建、使用查询分析器创建check约束约束安徽新华电脑专修学院安徽新华电脑专修学院例:创建列级核查约束,无约束名。例:创建列级核查约束,无约束名。use 学生管理数据库g
30、ocreate table 成绩表1 (学号 varchar(9),课程号 varchar(4),成绩 tinyint check(成绩 between 0 and 100)2、使用查询分析器创建、使用查询分析器创建check约束约束安徽新华电脑专修学院安徽新华电脑专修学院例:向表添加列级核查约束,有约束名。例:向表添加列级核查约束,有约束名。use 学生管理数据库 go alter table 成绩表1 with check add constraint c_成绩 check(成绩 between 0 and 100)2、使用查询分析器创建、使用查询分析器创建check约束约束安徽新华电脑专
31、修学院安徽新华电脑专修学院3.7 3.7 使用使用使用使用idendityidendity列列列列 标示为标示为idendityidendity属性的列不必在插入新行时为其赋值属性的列不必在插入新行时为其赋值,服服务器会自动为其设置一个唯一的行序列号。务器会自动为其设置一个唯一的行序列号。例:例:create table 学生表2 (学号 smallint identity(1,1)primary key,姓名 varchar(8),性别 varchar(2),年龄 tinyint,所在院系 varchar(10),班级名 varchar(10),入学年份 datetime )安徽新华电脑专修学院安徽新华电脑专修学院3.7查看约束查看约束Exec sp_helpcinstraint table_name安徽新华电脑专修学院安徽新华电脑专修学院1 1、使用企业管理器删除约束、使用企业管理器删除约束3.8 删除约束删除约束安徽新华电脑专修学院安徽新华电脑专修学院 2 2、使用查询分析器删除约束、使用查询分析器删除约束 use 学生管理数据库 go alter table 成绩表 drop constraint c_成绩 3.8 删除约束删除约束