第10章 SQL server 2008 表数据完整性

合集下载

SQLServer数据完整性

SQLServer数据完整性

我们在学习数据库的过程中,经常会听到两个概念:数据冗余和数据完整性。

数据冗余是指数据库中存在一些重复的数据,数据完整性是指数据库中的数据能够正确反应实际情况,我们说,为了性能着想,数据库中允许有一些数据冗余,但是要保持数据的完整性。

数据完整性=可靠性+准确性,这里我们要清楚以下几点:•数据存放在表中•“数据完整性的问题大多是由于设计引起的”•创建表的时候,就应当保证以后数据输入是正确的——错误的数据、不符合要求的数据不允许输入本质而言,保证数据的完整性= 实施完整性约束完整性包括1.实体完整性a)数据行不能存在重复2.域完整性a)实现了对输入到特定列的数值的限制3.引用完整性a)要求子表中的相关项必须在主表中存在b)如果建立了主表和子表的关系,则:i.子表中的相关项目的数据,在主表中必须存在;ii.主表中相关项的数据更改了,则子表对应的数据项也应当随之iii.更改;iv.在删除子表之前,不能够删除主表;4.自定义完整性实际上,SQL Server创建表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性、引用完整性和域完整性等)保证的过程。

创建表包括选择字段名称、数据类型、定义是否为空、设置默认值、主键和外键关系、检查约束等。

表中没有合适的列作为主键,可以创建标识列。

SQL Server中存在五种约束:•约束的目的:确保表中数据的完整型•常用的约束类型:–主键约束(Primary Key Constraint):要求主键列数据唯一,并且不允许为空–唯一约束(Unique Constraint):要求该列唯一,允许为空,但只能出现一个空值。

–检查约束(Check Constraint):某列取值范围限制、格式限制等,如有关年龄的约束–默认约束(Default Constraint):某列的默认值,如我们的男性学员较多,性别默认为“男”–外键约束(Foreign Key Constraint):用于两表间建立关系,需要指定引用主表的那列添加约束的语法:ALTER TABLE 表名ADD CONSTRAINT 约束名约束类型具体的约束说明❑约束名的取名规则推荐采用:约束类型_约束字段❑主键(Primary Key)约束:如PK_stuNo❑唯一(Unique Key)约束:如UQ_stuID❑默认(Default Key)约束:如DF_stuAddress❑检查(Check Key)约束:如CK_stuAge❑外键(Foreign Key)约束:如FK_stuNo下面我们来给前面建立的学员信息表stuInfo添加约束:/*添加主键约束(stuNo作为主键)*/ALTER TABLE stuInfo ADD CONSTRAINT PK_stuNo PRIMARY KEY (stuNo)/*添加唯一约束(因为每人的身份证号全国唯一)*/ALTER TABLE stuInfo ADD CONSTRAINT UQ_stuID UNIQUE (stuID)/*添加默认约束(如果地址不填,默认为“地址不详”)*/ALTER TABLE stuInfo ADD CONSTRAINT DF_stuAddress DEFAULT ('地址不详') FOR stuAddress/*添加检查check约束,要求年龄只能在15-40岁之间*/ALTER TABLE stuInfo ADD CONSTRAINT CK_stuAgeCHECK(stuAge BETWEEN 15 AND 40) /*添加外键约束(主表stuInfo和从表stuMarks建立关系,关联字段为stuNo)*/ALTER TABLE stuMarks ADD CONSTRAINT FK_stuNo FOREIGN KEY(stuNo) REFERENCES stuInfo(stuNo)GO如果错误地添加了约束,我们还可以删除约束删除约束的语法ALTER TABLE 表名DROP CONSTRAINT 约束名例如:删除stuInfo表中地址默认约束ALTER TABLE stuInfo DROP CONSTRAINT DF_stuAddressOK,有了完整性约束,数据完整性就有了保障,数据库中的数据也就能够正确地反应实际情况了。

数据库原理-理论教学-SQLServer数据完整性

数据库原理-理论教学-SQLServer数据完整性

SQL Server数据完整性一、完整性的概念之所以要引入数据完整性是为了在数据的添加、删除、修改等操作中不出现数据的破坏或多个表数据不一致数据完整性是指存储在数据库中的数据正确无误并且相关数据具有一致性二、完整性的类型1)实体完整性实体:表中的记录,一个实体就是指表中的一条记录。

实体完整性:在表中不能存在完全相同的记录,且每条记录都要具有一个非空且不重复的主键值。

实现实体完整性的方法:设置主键、惟一索引、惟一约束2)域完整性域完整性:向表中添加的数据必须与数据类型、格式及有效的数据长度相匹配。

实现域完整性的方法:CHECK约束、外键约束、默认约束、非空定义、规则以及在建表时设置的数据类型3)参照完整性参照完整性:又称为引用完整性。

是指通过主键与外键相联系的两个表或两个以上的表,相关字段的值要保持一致。

实现实体完整性的方法:外键约束4)用户定义的完整性用户定义的完整性:是根据具体的应用领域所要遵循的约束条件由用户自己定义的特定的规则。

三、约束的类型约束:SQL Server提供的自动强制数据完整性的一种方法。

它通过定义列的取值规则来维护数据的完整性。

常用约束:NOT NULL,CHECK、UNIQUE、PRIMARY KEY、FOREIGN KEY、D EFAULT1)主键约束:在表中定义一个主键来惟一标识表中的每行记录特点:每个表中只能有一个主键,主键可是一列,也可是多列;主键不能为空;主键值不能重复2)UNIQUE约束:它主要用来限制表的非主键列中的值不能重复。

特点:一个表中可以定义多个惟一约束3)NOT NULL约束:它用来设定某列值不能为空。

特点:如果设定某列为NOT NULL,则在添加记录时,则此列必须插入数据。

4)CHECK约束:它使用逻辑表达式来限制表中的列可以接受哪些数据值。

例如:成绩值应该在0-100之间,则可以为成绩字段创建CHECK约束,使取值在正常范围内。

5)DEFAULT约束:它为表中某列建立一个默认值,当为表中添加记录时,如果没有提供输入值,则自动以默认值赋给该列。

SQLsever2008数据库备份完整+差异

SQLsever2008数据库备份完整+差异

SQL sever 2008 数据库备份
完整+差异
1、打开sqlsever2008数据库客户端,选择管理-维护计划-维护计划向导,如下图:
2、点击下一步
3、制定计划名称,填写说明,选择没想任务单独计划,如下图:
4、选择维护计划项(这里选择检查完整性、备份完整数据库及差异数据库),如下图:
5、此处点击下一步即可:
6、这里选择要检查完整性的数据库(数据库完整性重要性也是很高的,如何修复请查阅资料)
7、选定后点击下一步即可
8、选择完整备份数据库
9、选择备份路径及验证完整性(备份完不能用更头疼,最好定期还原一个检查下)
10、差异备份与完整备份基本一致,如下图:
11、日志报告路径,可以查看备份结果及命令:
12、点击下一步
13、所有项都成功,点击关闭即可
14、双击设置好的计划,选择最左边制定执行时间
15、最好选择服务器使用频率最小时候进行完备,完整性和差异可以每天执行一次,选择好了点击确定,如下图:
16、在维护计划中点击执行,会报错,需要在sqlsever代理中执行。

17、如下图一次执行作业开始步骤:
18、执行成功
19、日志、完整备份、差异备份展示
20、数据库还原操作,需还原两次,第一次完整备份,第二次完整+差异,如下图:。

SQL Server2008数据完整性约束综合应用-图书管理系统

SQL Server2008数据完整性约束综合应用-图书管理系统

Байду номын сангаасSQL Server2008数据完整性约束综合应用-图书管理系统
Comprehensive application of Data integrity constraints in SQL Server2008-Library management system
2
知识点内容概要
知识点回顾 数据完整性约束综合应用
6 数据完整性约束综合应用
【实例2】在已创建的书刊借阅信息表borrow上,在图书编号bookId列上创建外 键与书刊信息表books中的图书编号bookID相关联,在借阅卡编号readerID列上 创建外键与读者借阅卡信息表readers中的借阅卡编号readerID相关联。 alter table borrow add constraint FK_borrow_books foreign key(bookID) references books(bookID) alter table borrow add constraint FK_borrow_readers foreign key(readerID) references readers(readerID)
11 数据完整性约束综合应用
【实例6】在数据库library中创建一个规则,并将其绑定到books表中的单价列上, 使得用户输入的图书单价在0~200之间,否则提示输入无效。 create rule r_price as @price>=0 and @pric<=200 go exec sp_bindrule r_price,'books.price'
3 知识点回顾
建立表的完整性语句 Create table [数据库名.[表的拥有者.]]表名 ({<列名><数据类型>|AS<表达式> [Constraint 约束名 [Null|Not null] [Identity(初值,步长)] [Default 缺省值 |Check(范围表达式) |Primary key clustered|nonclustered(主键所在的列名) |Unique clustered|nonclustered(唯一约束所在的列名) |Foreign key(从表外键的列名) References(主表主键的列名)]

SQL SERVER数据完整性及约束

SQL SERVER数据完整性及约束

SQL SERVER数据完整性及约束【摘要】所谓数据完整性,实际上是衡量数据库中数据质量好坏的一种标志,是确保数据库中数据一致,正确以及符合企业规则的一种思想,本文以详细的文字来介绍了什么是数据完整性及约束,以及如何在数据库建设中应用和使用这些约束。

【关键词】SQL Server;约束;数据完整性;一致性在数据库管理系统中,保证数据库中的数据完整性是非常重要的。

所谓数据完整性,就是指存储在数据库的表中数据的一致性和正确性。

约束定义关于列中允许值的规则,是强制完整性的标准机制,对输入数据的取值范围和格式的限制称为约束。

约束是用来保证数据完整性的。

在SQL Server中有6种常设约束:空置约束(NULL)、唯一性约束(unique constraint)、主键约束(primary key constraint)、外键约束(foreign key constraint)、检查约束(check constraint)、缺省约束(default constraint)。

一、SQL Server的数据完整性存储在数据库中的所有数据值均属正确的状态。

如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性。

强制数据完整性可确保数据库中的数据质量。

例如,如果有一“教学管理数据库”,学生表中学号一项输入了值为20110101的学生,那么该数据库不应允许其他学生使用同一学号值。

如果计划将选修表中成绩的值范围设定为0到100,则数据库不应接受121。

如果学生表有一列为班级编码,该列存储的班级编码为数据库中允许的有效班级编码。

二、数据完整性分类在SQL Server中,根据数据完整性所作用的数据库对象和范围不同,可以将数据完整性分为实体完整性、域完整性、引用完整性、用户定义完整性四种。

1、实体完整性实体完整性,简单来说,就是将表中的每一行看作一个实体。

实体完整性要求表的标示符列或主键的完整性(主键不能为空)。

SQL Server的数据库完整性及实现方法

SQL Server的数据库完整性及实现方法

插入数据时,如果没有明确提供列值,则用默认值作 为该列的值。
指定某个列或列组可以接受的范围,或指定数据应满 足的条件。 指定主码,确保主码值不重复,并不允许主码为空值。 指出数据应具有唯一值,防止出现冗余。 定义外码、被参照表和主码。 约束类型和完整性功能
3.实现数完整性的具体方法
(2)声明数据完整性约束的定义 声明数据完整性约束可以在创建表和修改表语句中定 义。约束分列级约束和表级约束两种:列级约束定义时, 直接跟在列后,与列定义子句之间无“,”分隔;元组级 约束和表级约束要作为语句中的单独子句,与列定义子句 或其他子句之间用“,”分隔。
1sqlserver约束的类型约束类型和完整性功能完整性类型约束类型完整性功能描述域完整性默认插入数据时如果没有明确提供列值则用默认值作检查指定某个列或列组可以接受的范围或指定数据应满足的条件
SQL Server的数据库完整性及实现方法
2015
数据库的完整性:数据完整性就是指 存储在数据库中的数据正确无误并且相关 数据具有一致性。数据库中是否存在完整 的数据关系到数据库系统能否真实的反映 现实世界。它是衡量数据库中数据好坏的 一种标志,是确保正确的数据被存放在正 确的位置的一种手段。例如:学校的学生 学号必须是唯一的;性别只能为男或女; 学生所在的系必须是学校已开设的系等。
ቤተ መጻሕፍቲ ባይዱ
you
CREATE TABLE 民族
( 民族代码 民族名称 GO char(2) CONSTRAINT pk_mzdm PRIMARY KEY, varchar(30) NOT NULL)
此例题就是建立了一个列级主键
3.实现数完整性的具体方法
(3)默认和规则 默认(DEFAULT)和规则(RULE)都是数据库对象。当它们被创建后,可以 绑定到一列或几列上,并可以反复使用。当使用INSERT语句向表中插 入数据时,如果设有为绑定有DEFAULT的列指定数据,系统就会将 DEFAULT指定的数据插入;如果绑定有RULE的列,则所插入的数据必须 符合RULE的要求。 默认和规则与约束相比,功能较低但开支大。所以,如果默认和规则 可以使用约束方法表示,要尽可能采用约束数据完整性方法处理。 (4)触发器 触发器是一个特殊的存储过程。在创建触发器时通过CREATE TRIGGER 语句定义触发器对应的表、执行的事件和触发器的指令。当发生事件 后,会引发触发器执行,通过执行其指令,保证数据完整性。 触发器的用途是维护行级数据的完整性,它不能返回结果集。与CHECK 约束相比,触发器能强制实现更加复杂的数据完整性,能执行操作或 级联操作,能实现多行数据间的完整性约束,能维护非正规化的数据。

sql sever2008教程

sql sever2008教程

sql sever2008教程SQL Server 2008是由Microsoft开发的关系型数据库管理系统。

它是SQL Server系列的第10个版本,于2008年发布。

本教程将为您介绍SQL Server 2008的基本概念、语法和常见用法。

一、SQL Server 2008简介SQL Server 2008是一个强大的数据库管理系统,可以用于存储和管理结构化的数据。

它支持多种数据类型,包括数字、字符、日期和时间等。

SQL Server 2008能够处理大量的数据,保证数据的安全性和完整性,并提供高效的查询和分析功能。

二、SQL Server 2008的安装和配置在开始学习SQL Server 2008之前,首先需要安装和配置它。

安装过程相对简单,您只需要按照安装向导的提示逐步操作即可。

配置方面,您可以设置数据库的默认语言、认证模式等。

三、SQL语法和基本操作SQL语句是用于操作数据库的命令。

SQL Server 2008支持标准的SQL语法,包括SELECT、INSERT、UPDATE和DELETE等语句。

您可以使用这些语句来查询、插入、更新和删除数据。

同时,SQL Server 2008还提供了更高级的功能,如事务处理、子查询、联接和视图等。

四、数据库设计和表的创建在使用SQL Server 2008之前,您需要设计好数据库结构,并创建相应的表。

数据库设计是数据库管理的重要一环,它涉及到数据的组织和关系的建立。

表是数据库中数据的基本单位,它由列和行组成。

通过创建表,您可以定义数据的结构和类型。

五、数据的插入和查询插入数据是将数据添加到表中的操作。

通过使用INSERT语句,您可以将数据插入到表的相应列中。

查询数据是从表中检索数据的操作。

通过使用SELECT语句,您可以查询满足条件的数据。

六、数据的更新和删除更新数据是修改表中数据的操作。

通过使用UPDATE语句,您可以更新表的特定行或列的数据。

SQLServer的数据完整性

SQLServer的数据完整性
可以选择是否指定规则所有者的名称。
❖ ② condition_expression:定义规则的条件。规则可以是 WHERE 子句中的任何有效的
❖ 例如,在项目管理数据库中,创建一个名为 部门信息的表,其中指定部门编号为主关
❖ 键字。
❖ USE 项目管理
❖ GO ❖ CREATE TABLE 部门信息 ( 部门编号 int
PRIMARY KEY, 部门名称 char(20),部门所 在地 char(20))
❖)
❖ 5.2 使用 规 则 ❖ 规则限制了可以存储在表中或者用户定义数据类型的值,它
CHECK 约束为列规定了一个范围,限制向特定列或有指定 用户定义数据类型的列输入数据的类型,指定应用于列中输 入的所有值的布尔搜索条件,拒绝所有不取值为TRUE 的值。 可以为每列指定多个CHECK约束,表定义的CHECK 约束可 以对多个列进行核查。
❖ CHECK 约束语法格式为:
❖ [CONSTRAINT constrain_name] CHECK [NOT FOR REPLICATION] (logical_expression)
可以使用多种方法来完成对数据值的检验,可以使用函数返 回验证信息,也可以使用关键字BETWEEN、LIKE 和IN完 成对输入数据的检查。 ❖ 可以从以下几个方面理解规则。 ❖ ① 规则是单独存储的独立的数据库对象,规则与其作用的表 或用户自定义数据类型是相互独立的。表和用户自定义对象 的删除修改,不会对与之相连的规则产生影响,规则和约束 可以同时使用表的列,可以有一个规则及多个CHECK 约束 规则。 ❖ ② 规则提供了一种加强列(字段)或用户定义数据类型域约束 的机制。 ❖ ③ 规则要在 INSERT 和UPDATE语句之前给出。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第10章SQL server 2008 表数据完整性
表数据完整性指的是数据库中表数据的准确性和一致性。

数据完整性是衡量数据库中数据质量好坏的一种标志,是确保数据库中数据一致、正确以及符合企业规则的一种思想。

可以使无序的数据条理化,确保正确的数据被存放在正确的位置的一种手段。

10.1 表主键
表主键(PRIMARY KEY)通过表数据中的一个列或多个列组合的数据来惟一标识表中的每一行数据。

换句话说,表主键就是用来约束数据表中不能存在相同的两行数据。

而且,位于主键约束下的数据应使用确定的数据,不能输入NULL来代替确定的数值。

在管理数据时,应确保每一个数据表都拥有自己惟一的主键,从而实现数据的实体完整性。

在SQL Server 2008系统中,表的主键约束有以下几个特征和作用:
●主键约束通常不允许一个或多个列输入重复的值,来保证一个表中所有行的惟一性,使所有行都是可区分的。

●一个表上只能有一个主键,且组成主键的列的数据都不能为空值。

●当定义主键约束时,SQL Server在主键列上建立惟一索引,这个索引在主键被查询时可以提高查询的速度。

当主键由多个列组成时,某一列上的数据可以出现重复,但是这
几个列的组合值必须是惟一的。

并且IMAGE和TEXT类型的列不能被
定义为主键。

在SQL Server 2008系统中,定义表的主键可以在创建表的同时定义主键,也可以给已有的表添加主键。

同时如果表中指定的主键不需要时,也可以通过Transact-SQL语句将其主键删除。

1.在创建表时定义主键
在创建表时,定义主键(PRIMARY KEY)约束的语法如下:
在上面语法中,各元素的具体意义如下:
●constraint_name 主键约束的名称,他也是数据库对象,所以约束的命名也必须遵守数据库对象命名的规则。

●CLUSTERED 表示在该列上建立聚集索引。

●NONCLUSTERED 表示在该列上建立非聚集索引。

例如,在【工资管理系统】数据库中,新建一个【学历表】,定义【学历编号】列为主键约束,具体语句如下所示:
2.给已有表添加主键
如果某个表已经存在,但没有设置主键(PRIMARY KEY)约束,那么就可以使用下列语句向表中添加PRIMARY KEY约束。

语句如下所示:
工编号】列添加主键约束:
3.删除主键约束
如果表中指定的主键约束不再需要,就可以通过Transact-SQL 语句将其删除掉,以释放磁盘空间。

例如删除上面建立的“PK_员工编号”主键约束,可使用如下语句:
Server Management Studio 工具也可以完成对主键的所有操作,只需要在表设计器中做相应修改即可,这里就不再多作介绍。

10.2 外键
外键是确保数据完整性并显示表之间关系的一种方法。

外键(FOREIGN KEY )也是由表的一个列或多个列组成的,他是和在相关表中事先定义的具有惟一性的列一起使用的,该列可以是所在表的主键。

外键约束用来建立和强调两个表之间的关联,即一个表的一个列或多个列的组合与另一表中的具有惟一性的列或列组合相关联,这个列或列组合就成为第一个表中的外键。

与主关键字相同,他也不能给一个定义为TEXT 或者IMAGE 数据类型的列创建外关键字。

1.在创建表时定义外键约束
创建表时定义外键约束的语法结构如下:
上述语法中各参数的说明如下:

REFERENCES 指定要建立关联的表的信息。


ref_table 指定要建立关联的表的名称。


ref_column 指定要建立关联的表中的相关列的名称。


ON DELETE{CASCADE | NO ACTION} 指定在删除表中数据时,对关联表所做的相关操
如果向一个没有指定主键约束的表中添加主键约束,那么指定为
主键约束的列必须已经指定了NOT NULL 约束,否则无法将该列指定为
主键约束。

作。

在子表中有数据行与父表中的对应数据行相关联的情况下,如果指定了值CASCADE,则在删除父表数据行时会将子表中对应的数据行删除;如果指定的是NO ACTION,则SQL Server会产生一个错误,并将父表中的删除操作回滚。

NO ACTION是默认值。

●ON UPDATE{CASCADE | NO ACTION} 指定在更新表中数据时,对关联表所做的相关操作。

在子表中有数据行与父表中的对应数据行相关联的情况下,如果指定了值CASCADE,则在更新父表数据行时会将子表中对应的数据行更新;如果指定的是NO ACTION,则SQL Server会产生一个错误,并将父表中的更新操作回滚。

NO ACTION是默认值。

●NOT FOR REPLICATION 指定列的外关键字约束在把从其他表中复制的数据插入到表中时不发生作用。

例如,创建一个新的【工资级别】数据表,指定“级别编号”为主键,“部门编号”为外键,具体代码如下:
如果一个表已经创建好但没有指定外键(FOREIGN KEY)约束,可以通过A LTER TALBE语句来添加FOREIGN KEY约束。

假定在创建【员工信息】表时,没有为【所在部门编号】创建外键约束,则可以使用下面语句实现:
3.删除外键约束
如果指定的外键(FOREIGN KEY)约束不再需要,则可以键使用语句把他删
作,只需要在表设计器中做相应修改即可,这里也不再多作介绍。

10.3 约束
约束可以用来限制列上可以接受的数据值,检查约束使用逻辑表达式来限制列上可以接受的数据。

可以在一列上使用多个检查约束,也可以在表上建立一个可以在多个列上使用的检查约束。

如果要创建列约束,则在定义中可以使用下列语法结构:
例如,在创建【员工信息】表的同时可以约束表中【性别】列只能在“男”或“女”中取值。

具体语句如下所示:
10.4 表关系
在关系数据库中,关系可以防止冗余数据,关系通过匹配键列(通常是两个表中同名的列)中的数据来发挥作用。

在大多数情况下,关系将一个表的主键(他为每行提供惟一标识符)与另一表中外键的项相匹配。

在SQL Server 2008系统中,表之间存在3种类型的关系,一对一关系、一对多关系、和多对多关系,所创建的关系类型取决于相关列的定义。

图4-14所示为【工资管理系统】数据库各表之间的关系图。

图3-12 【工资管理系统】数据库表关系图
下面介绍一下如何在Microsoft SQL Server Management Studio工具中创建数据表之间的关系图,具体操作步骤如下所示:
(1)在【对象资源管理器】窗格中,依次展开【数据库】|【工资管理系统】,在【数据库关系图】右击,选择【新建数据库关系图】命令。

(2)在打开的【添加表】对话框中选择要添加到关系图中的表,如图4-15所示,在这里选择全部的表,然后单击【添加】按钮,单击【关闭】按钮关闭【添加
表】对话框。

图3-13 【添加表】对话框
(3)在关系图设计器中,可以通过拖动主键到另外与之关联的表中的列上,
松开鼠标左键,此时将弹出【外键关系】对话框(如图4-16所示)和【表和列】对
话框(如图4-17所示)。

图3-14 【外键关系】对话框 图3-15 【表和列】对话框
(4)在【表和列】对话框中设置“主键表”和“外键表”项。

完成后单击【确定】按钮返回到【外键关系】对话框,单击【确定】按钮完成【员工信息】表与【部门信息】表的关联。

(5)在设计器中根据需要依次建立各表之间的关系。

最终创建好的【工资管理系统】数据库的关系图如图3-14所示。

相关文档
最新文档