数据库系统教程(第3版):补充4_数据完整性_第1页
数据库系统教程(第3版):补充4_数据完整性_第2页
数据库系统教程(第3版):补充4_数据完整性_第3页
数据库系统教程(第3版):补充4_数据完整性_第4页
数据库系统教程(第3版):补充4_数据完整性_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SQL SERVER中的数据完整性1 数据完整性概述 “数据完整性”是指存放在数据库中数据的一致性和准确性,通俗地将就是限制数据库表中可输入的数据。它是为了防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。 保证数据库的数据完整性,在数据库管理系统中是十分重要的,它是衡量数据库中的数据质量的重要标志。满足数据完整性的数据具有以下特点:数据正确无误;数据的存放必须确保同一表格数据之间的和谐关系;数据的存放必须维护不同表格之间的和谐关系。2 数据完整性分类与实施2-1 数据完整性分类 (1)实体完整性 (2)域完整性 (3)参照(引用)完整性 (4)用户

2、定义完整性3 约束 约束是SQL Server 提供的自动保持数据库完整性的一种方法,它是通过限制列中数据行中数据和表之间数据来保持数据完整性。 约束是独立于表结构的,作为数据库定义部分在CREATE TABLE语句中声明,可以在不改变表结构的基础上,通过ALTER TABLE语句添加或者删除.当表被删除时,表所带的所有约束定义也随之被删除。 在SQL Server 中主要有下列约束:主键约束(Primary Key Constraint)外键约束(Foreign Key Constraint)唯一性约束(Unique Constraint)检查约束(Check Constraint)默认值约

3、束(Default Constraint) 级联引用完整性约束NULLable约束sp_helpconstraint table_name 查看约束信息主键约束表中经常有一个列或列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义 PRIMARY KEY 约束来创建主键。一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列。如果 PRIMARY KEY 约束定义在不止一列上,则一列中的值可以重复,但 PR

4、IMARY KEY 约束定义中的所有列的组合的值必须唯一。主键约束应用举例1:在创建表时,同时设定该约束 create table xy ( 学号 char(4) primary key , 姓名 char(8)2:若表已存在,添加列的同时设定该约束alter table xy add 学号 char(4) primary key3:若表和指定列都已存在,则可单独添加该列的约束 alter table xy add constraint 学号_nst primary key(学号)外键约束参照完整性要求:外部键值必须引用有效的主键值,所以这项约束是对于外部键的约束。当要实现这类要求应用时,则可

5、使用参照完整性声明。CREATE TABLE SC(S# CHAR(4),C# CHAR(4),GRADE SMALLINT,PRIMARY KEY(S#,C#),FOREIGN KEY(S#) REFERENCES S(S#),FOREIGN KEY(C#) REFERENCES C(C#),CHECK(GRADE BETWEEN 0 AND 100)外键约束应用举例修改表定义加入外键约束Alter table xsxk add constraint fk_学号 foreign key(学号) references xsxx(学号) on delete cascade级联的作用:将把主表中的

6、记录及其相关的从表中的记录一起删除。 删除顺序是:首先删除从表中的记录,然后再删除主表中的记录。 注: 若启用了级联删除选项,执行删除主表的记录的命令,也会同时删除从表中所有相关的记录行。唯一性约束使用惟一值unique约束的用途是保证指定列中的每一个值都必须是唯一的1:在创建表时,同时设定该约束 create table xs ( 学号 char(4) unique, 姓名 char(8) , 借书证号 char(6) not null)2:若表已存在,添加列的同时设定该约束 alter table xs add 借书证号 char(6) unique3:若表和指定列都已存在,则可单独添加该

7、列的约束 alter table xs add constraint 学号_cnst unique(学号)主键约束与唯一性约束的比较1:在一个表中只能有一个主键primary key约束,同时被指定为主键约束的列不能接通受空值。2:在一个表中可以设置多个unique约束列,被指定为unique的列,允许为空值3:主键可以惟一地标识一行,在设置某列为主键时,应当考虑主键作为一个可以被外部键有效引用的对象,不应当包含动态变化的数据,如时间戳、创建时间列、修改时间列等。 有两种数据最适合于做主键:标识列和全局惟一标识符。关于标识(identity) 列的说明identity列的值是由SQL inse

8、rt操作而自动产生的。一般情况下,insert语句不能通过为标识列提供值的方法来影响标识的值。1:在创建表时,同时设定标识列CREATE TABLE(. 学号 int identity(1001,1)2:将已存在的列设为identity列,以便自动产生序列号。 alter table xsxx add 学号 int identity(1001,1)检查约束Check约束是一种快速的行级(域)完整性检查机制。1 在创建表时,同时设定该约束CREATE TABLE(. 性别 NCHAR(1) CHECK 性别 IN(男,女))2 若表已存在,添加列的同时设定该约束alter table xx ad

9、d性别 NCHAR(1) CHECK 性别 IN(男,女)3 若表和指定列都已存在,则可单独添加该列的约束alter table xx add constraint 性别_chk CHECK 性别 IN(男,女)默认值约束1:在创建表时,同时设定该约束 create table xx ( 年龄 SMALLINT default(18) )2:若表已存在,添加列的同时设定该约束 alter table xx add 专业名 smalldatetime default(不详)3:若表和指定列都已存在,则可单独添加该列的约束 alter table xx add constraint 入学时间_df

10、lt default(getdate() for 入学时间默认值约束与空值约束的特性若某列指定了default约束,在insert语句中没有为该列提供数据时,SQL Server将插入默认值。若某列指定了default约束,在insert语句中为该列提供数据时,SQL Server将插入提供的值。若某列未指定了default约束,同时,该列也允许空值,在insert语句中没有为该列提供数据时,则SQL Server将插入null值。4规则 规则就是创建一套准则,并将其结合到表的列或用户自定义数据类型上,添加完之后它会检查添加的数据或者对表所作的修改是否满足所设置的条件。规则也是一种独立的数据库

11、对象,正是由于它的独立性,可以将它用在用户自定义数据类型上,而不仅仅是表的列上。规则可以绑定到一列或者多列上,也可以绑定到用户自定义数据类型上。4-1 创建规则 (1)使用企业管理器创建规则。 (2)用Transact-SQL语言创建规则。 语法结构如下: CREATE RULE rule_name as condition_expression4-2 绑定规则 创建规则后,规则仅仅只是一个存在于数据库中的对象,并未发生作用。需要将规则与数据库表或用户自定义数据类型进行绑定,才能使规则生效。所谓绑定就是指定规则作用于哪个表的哪一列或哪个用户自定义数据类型,此后列或用户自定义数据类型的所有数值必

12、须满足此规则。 绑定规则一般使用两种方法: (1)使用企业管理器绑定规则。 (2)使用Transact-SQL语言。 语法结构如下: sp_bindrule rulename=rule,objname=object_name,futureonly4-3 解除与删除规则 (1)解除规则。 Transact-SQL语言中的存储过程Sp_unbindrule 可解除规则与列或用户自定义数据类型的绑定。其语法如下: sp_unbindrule objname = object_name,futureonly 其中参数的含义和绑定规则的参数的含义相同,不再赘述。 在企业管理器中也可以解除规则,操作正好和

13、绑定规则是相反。 (2)删除规则。 可以在企业管理器中选择规则,单击右键,从快捷菜单中选择【删除】选项删除规则,也可用DROP RULE命令删除当前数据库中的一个或多个规则。其 语法如下: DROP RULE rule_name ,.n 在删除一个规则前,必须先将与其绑定的对象解除绑定。5默认值 默认值是一种数据库对象,可以绑定到一列或者多列上,也可以绑定到用户自定义数据类型上,其作用类似于默认(DEFAULT)约束,但两者略有区别。默认约束时在ALTER TABLE 或CREATE TABLE语句中定义的,嵌入了被定义的表的结构,也就是说删除表的时候默认约束也随之被删除了。默认值的使用需要用

14、CREATE DEFAULT语句进行定义。作为一种单独的数据库对象,它是独立于表的,删除表并不能删除默认数值,而是需要使用DROP DEFAULT命令才能删除。5-1 创建默认 创建默认值的方法有两种:使用Transact-SQL语言与使用企业管理器创建默认值。 (1)使用Transact-SQL语言创建默认值 命令语法如下: CREATE DEFAULT default_name AS constant_expression (2)使用企业管理器创建默认 在企业管理器中选择数据库对象中的【默认】,单击右键,从快捷菜单中选择【新建默认】选项,即会弹出创建默认值属性对话框。在【名称】和【值】后面

15、的文本框里分别输入默认值名称和表达式之后,单击【确定】按钮,完成默认值的创建。5-2 绑定默认 (1)使用Transacr-SQL语言绑定默认 在Transacr-SQL语言中使用存储过程Sp_bindefault绑定默认值,它可以绑定一个默认值到表的一个列或一个用户自定义数据类型上,其语法如下: sp_bindefault defname = default_name, objname = object_name , futureonly (2)使用企业管理器绑定默认 在企业管理器中,选择要进行绑定的默认值,单击右键,从快捷菜单中选【属性】选项,即会出现默认值属性对话框.【绑定UDT】按钮用

16、于绑定用户自定义的数据类型,【绑定列】按钮用于绑定表的列。 单击【绑定UDT】按钮, 如果要绑定默认值,选择用户自定义数据类型在【绑定】栏的复选框,如果要求默认值只对以后输入的数据有效,可以选择用户自定数据类型后面的【仅将来】复选框。 单击【绑定列】按钮会出现如图所示的对话框。在【表】后面的下拉表单选择类所属的表。单击【添加】按钮将列与默认值进行绑定。5-3 解除与删除默认 (1)使用Transact-SQL语言解除默认 存储过程Sp_unbindefault可解除缺省值与表的列或用户自定义数据类型的绑定。 其语法如下: Sp_unbindefault objname = object_name ,futureonly (2)删除默认 解除默认值的绑定后,默认值并没有消失,仍然在数据中。如果要删除可以使用企业管理器或者Transact-SQL语言。 可在企业管理器中删除默认,右键单击要删除的默认,从弹除得快捷菜单中选择【删除】选项即可删除默认。使用DROP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论