SQL Server 2000数据库中实现数据参照完整性的方法分析

合集下载

SQL_Server_2000_5

SQL_Server_2000_5
特点: 程序化数据完整性可以通过相关的程序语言及
工具在客户端或服务器端实施。 使用存储过程或触发器来实施程序化数据完整 性。
实施数据完整性方法比较 方法 约束 默认值 规则 触发器 影响 依存于表的定义,性能最好 独立的数据对象,可以绑定一个或 多个表 独立的数据对象,可以绑定一个或 多个表 依存于表的定义,提供级联和复杂 的应用程序功能,可以撤销事务 功 开 事务 能 销 前后 中 低 前 中 中 低 中 高 高 前 前 后
(1)主键约束 主键约束是指表的一列或几列的组合在表中 具有唯一性,即可以唯一地标识表的一条记 录。一个表中可以有一个以上的列组合,这 些组合可以唯一标识表中的行,每个组合就 是候选键。数据库管理员从候选键中选一个 作为主键。
主键的要求: 一个表中不能有两行包含相同的主键值 不能在主键的任何列中输入NULL值 每个表都应有一个主键 IMAGE和TEXT类型的列不能作为主键
创建外键
CONSTRAINT constraint_name FOREIGN KEY(Colunm1, Colunm1,……) REFERENCES erf_table(ref_column1, ref_column1,……) ON FILEGROUP
例3
(3)唯一性约束 唯一性约束指定一个或多个列的组合值具有 唯一性,以防止在列中输入重复的值,通过 唯一性约束实施数据完整性。 主键具有唯一性,所以主键不能实施唯一性 约束。 一个表可以定义多个唯一性约束,但只能定 义一个主键约束。 唯一性约束的列可以为NULL,但是不允许一 行以上的值为NULL。
例9
sp_unbindrule 'tt.xb' GO DROP RULE r_xb

第九讲实现SQL Server 2000数据完整性

第九讲实现SQL Server 2000数据完整性

在企业管理器中删除规则
选取该规则, 右键/删除
删除规则
删除规则 前必须 解绑规 则。可 以在属 性窗口 中删除 掉已绑 定的规 则。如 不先解 绑,则 系统会 报错。 如右图 所示。
比较规则与CHECK约束
请大家自己看教材P146比较规则与CHECK约束的联 系与区别。
使用默认


默认与规则一样,也 是一种数据库对象。 如右图。 默认也有创建,绑定, 解绑,删除,其操作 类似于规则的操作。 所以课堂上不再讲解, 请大家自己来练习。
CREATE TABLE 系 (系部代码 char(2) CONSTRAINT ix_xbmc UNIQUE, 系部名称 char(30), 系主任 char(8))
约束的创建
约束的创建
创建检查约束 使用企业管理器创建:在表设计器中,选取该字段,右 键选取“CHECK约束”(如下页图) ♦使用SQL 语句创建
完整性的类型

实体完整性 域完整性 参照完整性 用户定义的完整性
完整性的类型



实体完整性 实体:表中的记录,一个实体就是指表 中的一条记录。 实体完整性:在表中不能存在完全相同 的记录,且每条记录都要具有一个非空 且不重复的主键值。 实现实体完整性的方法:设置主键、惟 一索引、惟一约束、指定IDENTITY属性
请自己完成创建表指定外键 的语句
返回
约束的创建
返回上一页
查看约束的定义
一、使用企业管理器查 看约束信息
1在表设计器的窗口中可 以查看主键、空值、默认 值约束信息 2在右键/属性中可以查 看外键约束、CHECK约 束。
二、使用系统存储过程 查看约束信息 EXEC sp_help EXEC sp_helptext

数据库SQL Server 2000实验报告

数据库SQL Server 2000实验报告

数据库原理及应用实验报告实验题目:定义表和数据库的完整性和表数据的插入,修改和删除系:经济学班级:、、、、、、、、、、学号:、、、、、、、、、、、姓名:、、、、、、、、任课教师:、、、、、、、、、、时间:2012年11月一、实验目的(1)了解SQL Server 2000的基本数据类型,空值的概念,以及表的结构特点。

(2)学会使用T-SQL语句和企业管理器创建表结构和修改表结构。

(3)学会使用SQL Server 2000提供的数据完整性功能,并在创建表是定义表的数据的完整性。

通过实验进一步理解数据完整性的概念和分类。

(4)掌握使用T-SQL语句和企业管理器对数据表进行插入,修改和删除数据的操作,并体会数据完整性约束的作用,加深对数据完整性及其约束的理解。

通过本实验,要熟练掌握INSERT,UPDATE,DELETE语句和使用方法。

二、实验环境装有SQL Server 2000的实验机。

三、实验前准备1.要明确能够创建数据库的用户必须是系统管理员,或是被授权使用CREATE DATABASE语句的用户。

2.创建数据库必须要确定数据库名、所有者、数据库大小和存储数据的文件。

3.确定数据库包含哪些表以及包含的各表的结构并且弄明白各表之间的关系。

还要了解SQL Server 的常用数据类型,以创建数据库的表。

4.了解常用的创建数据库和表的方法。

企业管理器创建和语句创建都要会。

5 .要会进行数据的插入、删除、修改的操作方法。

四、实验内容(1)用企业管理器在数据库中创建名称为“020李”的数据库,在其中创建学生表student,课程表course,学生选课表sc,根据课本中的表结构创建后,如下图所示Student表Sc表Course表(2)用T-SQL语句在“020李”数据库中创建客户基本信息表customers,货品信息表goods,订单信息表orders,它们定义如下:create table customers(customerID int identity(1,1) primary key,Cname varchar(8) not null,address varchar(50),city varchar(10),tel varchar(50),birthday datetime,type tinyint default 1);create table goods( goodsid int constraint C1 primary key, goodsname varchar (20)not null,price money ,description varchar(200),storage int,provider varchar(50),Status tinyint default(0));create table orders(orderid int identity(1,1) constraint c2 primary key ,goodid int not null references goods(goodsid) on delete cascade,customerid int not null foreign key(customerid)references customers (customerid) on delete no action,quantity int not null constraint c3 check(quantity>0),ordersum money not null,orderdate datetime default(getdate())); customers表Goods表Orders表(3)、使用SQL语句在SPJ数据库中创建第2章习题10中的四张表;供应商表S,零件表P、项目表J和供应情况表SPJ,数据类型自行设计,注意同时定义主键、外键和其他的数据完整性。

SQL server2000的使用 参照完整性

SQL server2000的使用  参照完整性
参照完整性
外键的约束
参照完整性
是一个在两张表上的约束条件,要求在一 张表中某些列的取值要受到另一张表中某 些列值的限制,换句话讲,一张表中列的 取值要参照另一张表中的列值。参照完整 性是通过外键实现的。如果成绩表中含有 与学生基本表的主键(学号)相对应的列, 则称这个学号是成绩表的外键。参照完整 性的意义在于成绩表中学号取值只能是在 学生表中学号的取值范围。
在成绩表中[学号] 例:在成绩表中[学号]列上建立外键的作用
当往成绩表中插入数据时,[学号] 当往成绩表中插入数据时,[学号]列的取值要来自 学生基本表中学号值,也就是说,成绩表学号取 值要参照学生基本表中学号值。如下图:(插入 限制) 学号 X101 X10之前 一定要到学生基本表中查看一下,查看所 插入的学号是否为学生基本表中已经存在 的学号值。这非常符合现实生活,一个学 校的学生必然要属于这个学校的注册生, 才有资格选课学习且拥有成绩表。 当要删除学生基本表中数据时,首先要 检查成绩表中没有要删除的学号对应的数 据行,则可以删除学生基本表中数据行。 如果在成绩表中还有要删除的学号对应的 数据行,则需要明确判定如何操作,一般 是不允许删除。如下图所示:(删除限制)
学生基本表
成绩表
学号 X101 X102 X103 X104
学号 没有 学号 为 X104 的数 据
删除操作成功!
学生基本表 学号 X101 X102 X103 X104
删除操作失败!
成绩表
学号 存在学 号为 X104的 X104的 数据
正确删除次序是首先删除或修改成绩表中学 号为X104的所有数据行,然后再到学生基 号为X104的所有数据行,然后再到学生基 本表中删除学号X104的数据行。 本表中删除学号X104的数据行。

第6章 SQL Server 2000 数据完整性

第6章 SQL Server 2000 数据完整性

[EXECUTE] sp_bindrule ’规则名 称’,’表名.字段名’|’自定义 数据类型名’
3. 解绑规则
[EXECUTE] sp_unbindrule ’表名.字 段名’|’自定义数据类型 名’
4. 删除规则 DROP RULE 规则名称[,…n]
第六章
6.6.2使用企业管理器管理规则
(3)在弹出的“索引/键”属性对话框 中,选择“索引/键”选项卡,单击“新 建”按钮,然后在“索引名”文本框中 输入唯一约束的名称,再从列名选项下 拉框中选择字段名称(本例为“系部名 称”),最后选择“创建UNIQUE”复选框 和“约束”单选框,如图6.8。 (4)单击“关闭”按钮,关闭对话框, 完成唯一约束的创建。这个时候,不只 是该表的主键必须为唯一,并且被设置 成为唯一约束的字段同样必须为唯一。
第六章
2. 规则的绑定和解绑
将创建好的规则绑定到某列或将规则 从某列解绑都是在“规则属性”对话 框中完成的,步骤如下: (1)打开企业管理器,展开到数据库 节点; (2)单击规则图表,在右方打开规则 详细信息,右击需要绑定或解绑的规 则,在弹出的快捷菜单中选择“属性” 打开属性对话框,如图6.18;
第六章
2. 使用SQL语句创建检查 约束
使用SQL语句在创建表的同时创建 检查约束,如下例: 【例6.4】利用SQL语句创建“课 程”表,并且在创建的同时,创建 检查约束,使学分字段被约束在1至 7之间。程序清单如下:
USE student GO
CREATE TABLE 课程
(课程号 int PRIMARY KEY,
(2)在表设计器中,选择需要设为 主键的字段,如果需要选择多个字 段时,请按住Ctrl再选择其他列。 (3)选择好后,用鼠标右击该字 段,从弹出的菜单中选择“设置主 键”如图6.2, (4)执行完命令后,在该列前面会 出现钥匙图样,说明主键设置成功

数据完整性在SQL SERVER中的实现(自己做的)

数据完整性在SQL SERVER中的实现(自己做的)

(6)例: CREATE TABLE S_B (学号 CHAR(5), 书号 CHAR(5), 借阅时间 DATATIME, 归还时间 DATATIME, CONSTRAINT P_Y PRIMARY KEY (学号, 书号))
1)列级、表级区别:
在列级定义同时定义的约束称为列级完整性约束定义; 作为表的独立的一项定义的完整性约束称为表级完整性 约束。 如果完整性约束涉及到该表的多个属性列,必须定义在 表级上,否则既可以定义在列级也可以定义在表级。 简而言之: 列级约束:列级约束是行定义的一部分,只能应用于一 列上。 表级约束:表级约束是独立于列的定义,可以应用在一 个表中的多列上
4、用户定义的完整性
(1)用户定义的完整性是应用领域需要遵守 的约束条件,其允许用户定义不属于其他任何 完整性分类的特定业务规则。所有的完整性类 型都支持用户定义完整性。
(2)常见的实现机制: 规则(Rule)、创建数据表时所有约束 (Constraint)、触发器(Trigger)、存 储过程(Stored Produre)
2、参照完整性
(1)参照完整性是指在两个表的主码和外码之 间数据的完整性,含义包括: 参照完整性保证被参照表和参照表之间 数据的一致性 可以防治数据丢失或者无意义的数据 可以禁止在从表中插入被参照表中不存 Байду номын сангаас的关键字的记录
(2)定义FOREIGN KEY 约束
语法: Create table myTB1 ( id nvarchar(32) not null primary key, name nvarchar(32), foreign key(id) references myTB(id) )
(3)定义D EFAULT 约束

详解sql中的参照完整性(一对一,一对多,多对多)

详解sql中的参照完整性(一对一,一对多,多对多)

详解sql中的参照完整性(⼀对⼀,⼀对多,多对多)⼀、参照完整性参照完整性指的就是多表之间的设计,主要使⽤外键约束。

多表设计: ⼀对多、多对多、⼀对⼀设计1.⼀对多关联主要语句:constraint cus_ord_fk foreign key (customer_id) REFERENCES customer(id)创建客户表——订单表⼀个客户可以订多份订单,每份订单只能有⼀个客户。

-- 关联(1对N)create table customer(id int PRIMARY KEY auto_increment,name varchar (20) not null,adress varchar (20) not null);create table orders(order_num varchar(20) PRIMARY KEY,price FLOAT not NULL,customer_id int, -- 进⾏和customer 关联的字段外键constraint cus_ord_fk foreign key (customer_id) REFERENCES customer(id));insert into customer(name,adress) values("zs","北京");insert into customer(name,adress) values("ls","上海");SELECT * from customer;INSERT INTO orders values("010",30.5,1);INSERT INTO orders values("011",60.5,2);INSERT INTO orders values("012",120.5,1);SELECT * from orders;notice: constraint: 约束的意思。

SQL Server2000在数据规划过程中的数据完整性实现

SQL Server2000在数据规划过程中的数据完整性实现
在 S QL
Se
v r
e r

其 简便 的操 作 强 大 的功能 成 为 了很 多 数 据 库 开 发初学 者
的首选 工 具

但 是 大 多 数初 学 者 使 用 S QL

Se
r v e r
200 0


2000

中强 制域完 整 性 的方 法 有很 多 常

建数据库 和 表 的 时候 会 遇 到


实 体完 整性 的定 义 比 较 简单 可 以 通 过 在 建 立 表 的 时

候指 定 主 键
1 1

( P R IMA R Y KE Y
) 来 完 成 也 可 以 在 创建 表 以

域完整 性

后 通 过 创 建表 的 U NI QU E 约 束来 进 行


只 是在 定义 的时候
MA R Y
M Y) 但是可 以没有 U IU , N Q E约束 。如果一张表中定义了 U IU N Q E约束或者主键 ( R MA Y M Y , 么就 不能在定 P I R )那 义了 U I ̄ 约束或主键 (  ̄M R E 的行上定 义其 NQ P A Y K Y) 他的 U IU NQ E约束或主键 (  ̄MA Y M Y 。 P R ) 13 引用完整性 .
y s te
m


gr a lity

t ic
o
le br ie f y in l f the
s e
duc
e s
ho w
th e
s
to u s e
r e s s e
tr a in s

第六章 SQL Server 2000 数据完整性

第六章 SQL Server 2000 数据完整性

第六章
中可以将“系部代码”作为主键,用来保证记录的唯 一性 。 4.PRIMARY KEY约束标识列或列集,这些列或列 . 约束标识列或列集, 约束标识列或列集 集的值唯一标识表中的行 在一个表中,不能有两行包含相同的主键值。不能在 主键内的任何列中输入空值。在数据库中“空”是特 殊值,代表不同于空白和 0 值的未知值。建议使用一 个小的整数列作为主键。每个表都应有一个主键。例 如,要在“学生”表中区分每一个学生,区分的唯一 标志不是姓名,也不是出生日期,更不能是班级,而 是每个学生唯一对应的“学号”值,“学号”在表中 就应该设为主键。 5.FOREIGN KEY约束标识表之间的关系 . 约束标识表之间的关系
第六章
【例6.2】如果在创建“教材”表时没有指定主键, 可在创建好后的“教材”表中,将“教材代码”设置 为主键。 代码如下: USE student GO ALTER TABLE 教材 ADD CONSTRAINT pk_jcdm PRIMARY KEY CLUSTERED (教材代码) GO 在对象资源管理器中 可以看到如图6-6所 示的主键创建好的 效果。
第六章
3.参照完整性 .
参照完整性(referential integrity)是指两个表的主键 和外键的数据应对应一致。它确保了有主键的表中对 应其他表的外键的存在,即保证了表之间数据的一致 性,防止了数据丢失或无意义的数据在数据库中扩散。 参照完整性是建立在外键和主键之间或外键和唯一性 关键字之间的关系上的。例如,在“学生”表中的 “系部代码”的值必须是在“系部”表中存在的值。 在SQL Server 2005中,参照完整性作用表现在如下 三个方面: (1)禁止在从表中插入包含主表中不存在的关键字 的数据行。 (2)禁止会导致从表中相应值孤立的主表中的外键 值改变。 (3)禁止删除在从表中有对应记录的主表记录。

SQL Server 2000数据库中数据完整性解决方案

SQL Server 2000数据库中数据完整性解决方案
职 业 技 能
C E R HO Z AR E RI ON
S L S re 00 q ev r20 数据库中数据完整性解决方案
徐 也 可
摘要 : 保证数据库 中数据 的完整性 ,在数据库应用 中是十 数据完整性可 以分为 4种类型 :实体完整性 (ni nery 、 Ety I gi ) t t t 分 重要 的.它是衡量 数据库 中数据质 量的 重要标 志。在 S 域 完 整 性 (o i I ery 、 照 完 整 性 (ee nilnery 、 L Q D ma n gi ) 参 n t t Rfr t t i ) e a I gt Sre 2 0 e r 00中, 以通过 “ v 可 约束” 规则” 默认” 触发器” 用 户 定 义 的完 整 性 (sr df e nery 。 、“ 、“ 、“ 、 U e- ei d I gi ) n t t “ 存储 过程”等来达 到保证数据完整性 的 目的。 1实体 完 整性 。 实体 完 整 性也 称 为行 完 整 性 ,是规 定 表 中 . 关键词 :数据 库 ;S L Sre 2 0 ;数据完整性;约束 ; 的每一行数据在表 中保证惟一且非空值 ,即数据库 中所有的行 O evr 0 0
性别char2check性别男or性别女以上定义的全为列对象级数据完整性定义学号列为主键姓名列为非空值性别列通过检验checkcreatetable课程表课程名char20primarykeyconstraintkcxzidcheck课程性质考试or以上定义的约束constraintkcxzidcheck课程性质考试or课程性质考查为表对象级数据完整createtable学生成绩表学号char6课程名char20成绩intconstraintxhkcmidprimarykey学号课程constraintxhidforeignkey号references学生信息表学号constraintkcmidforeignkey名references课程表课程名以上三个约束全为表对象级约束约束constiaintxhkcmidprimarykey学号课程名保证学号课程名非空且惟一约束constraintxhidforelgnkey学号references学生信息表学号constraintkcmidforeignkey名references课程表课程名保证该表中的学号和课程名字段值只能取中已存在的学号值和中已存在的课举例2

SQLServer的数据库完整性和实现方法

SQLServer的数据库完整性和实现方法
SQL Server的数据库完整性及实现方法
2015
数据库的完整性:数据完整性就是指 存储在数据库中的数据正确无误并且相关 数据具有一致性。数据库中是否存在完整 的数据关系到数据库系统能否真实的反映 现实世界。它是衡量数据库中数据好坏的 一种标志,是确保正确的数据被存放在正 确的位置的一种手段。例如:学校的学生 学号必须是唯一的;性别只能为男或女; 学生所在的系必须是学校已开设的系等。
触发器的用途是维护行级数据的完整性,它不能返回结果集。与CHECK 约束相比,触发器能强制实现更加复杂的数据完整性,能执行操作或 级联操作,能实现多行数据间的完整性约束,能维护非正规化的数据。
you
放映结束 感谢各位观看!
谢 谢!
让我们共同进步
2.数据完整性的两种方式
(1)声明数据完整性 声明数据库完整性通过在对象定义、系统本身自动 强制来实现。声明数据完整性包括各种约束、默认 和规则。 (2)过程数据完整性 过程数据完整性通过使用脚本语言定义,系统在执 行这些语言时,强制完整性实现。过程数据完整性 包括触发器和存储过程等。
3.实现数完整性的具体方法
默认和规则与约束相比,功能较低但开支大。所以,如果默认和规则 可以使用约束方法表示,要尽可能采用约束数据完整性方法处理。
(4)触发器
触发器是一个特殊的存储过程。在创建触发器时通过CREATE TRIGGER 语句定义触发器对应的表、执行的事件和触发器的指令。当发生事件 后,会引发触发器执行,通过执行其指令,保证数据完整性。
1.数据库完整性的分类
(1)域完整性
域完整性为列级和元组级完整性。它为列或列组指定一个有效的数据 集,并确定该列是否允许为空。域完整性要求向表中指定列输入的数 据必须具有正确的数据类型、格式以及有效的数据范围。实现域完整 性的方法主要有CHECK约束、外键约束、默认约束、非空定义、规则以 及在建表时设置的数据类型。

SQLSERVER2000数据库及应用第4章 数据完整性的设计与实现

SQLSERVER2000数据库及应用第4章  数据完整性的设计与实现

2.使用Transact-SQL语句设置规 则
例4-13 使用Transact-SQL语句取消对规
则“RL_大于等于0”在“定价”字段上 的绑定,并删除此规则。
4.4 参照完整性的设计与实现
设置参照完整性是为了保证数据表之间
的数据保持一致,通过在两个数据表之 间的主键和外键之间或惟一键和外键之 间建立外键约束来实现。
的组合值具有惟一性,即不会出现重复 的值。在一个数据表中可以为多个字段 或字段的组合设置惟一性约束。
1.通过企业管理器管理惟一性约 束
例4-5 使用企业管理器在“图书基本信
息表”中为“书名”和“作者”两个字 段的组合字段设置惟一性约束。
2.使用Transact-SQL语句设置惟 一性约束
使用Transact-SQL语句设置惟一性约束
1.使用企业管理器管理默认约束
例4-7 在“图书基本信息表”中为“类
别”字段设置默认约束“计算机”。
2.使用Transact-SQL语句设置默 认约束
可以使用DEFAULT关键字来指定某个字
段的默认值。 例4-8 创建“图书基本信息表3”,并为 “类别”字段设置默认约束“计算机”。
4.3.2 检查约束
通过定义主键,能够惟一地确定表中的
每一条记录。定义为主键的列不允许为 空,且image和text类型的列不能被指定 为主键。可以将数据表中的一列或多列 的组合定义为主键。
1.通过企业管理器管理主键约束
例4-1 在“图书基本信息表”中为“图
书编码”字段设置主键约束。
2.使用Transact-SQL语句设置主 键约束
(2)域完整性。
(3)参照完整性。 (4)用户定义的完整性。 本章主要介绍前三种数据完整性的设计

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 Server2000数据完整性

SQL Server2000数据完整性

利用企业管理器添加CHECK约束
在企业管理器中展开服务器组,然后展开一个服务器。 展开目标数据库并在该数据库下面单击“表”节点,使该数据 库中包含的表对象显示在详细信息窗格中。 鼠标右击要添加CHECK 约束的表,选择“设计表”命令,以 打开表设计器窗口。 鼠标右击表设计器窗口,然后选择“CHECK约束”命令。 在图7所示的“CHECK约束”选项卡中单击“新建”按钮,为 所选取的表创建一个CHECK约束,然后在“约束表达式”框中 输入一个条件表达式。例如,可以对“成绩表”中的“成绩” 字段设置以下约束条件:(成绩>=0 AND 成绩<=100) 用户可以在“约束名”文本框中为新建的约束重命名。 单击“关闭”按钮,返回到表设计器窗口。
alter table 成绩表 alter column kch int not null
alter table 成绩表 add constraint pk primary key (xh,kch)
create table 成绩表 (xh int constraint fk_xh foreign key(xh) references 学生表(xh), kch int constraint fk_kch foreign key(kch) references 课程表(kch), cj int)

使用企业管理器创建FK 约束(续)
此时将出现“创建关系”对话框,如图3所示,列出了当前所 选择的主键和外键。如不符合要求,还可以在列表中重新选择。 “关系名”文本框中显示的是系统所给出的关系名。用户可以 自己对关系进行重命名。另外,还有三个复选框。用户可以根 据实际需要进行选择。 确定”按钮,则在当前数据库关系图中创建这个关系,此时在 主键表和外键表之间将会出现一根连接线,表明这两个表已经 关联起来,如图4所示。 最后在工具栏上单击“保存”按钮,然后在“另存为…”对话 框中输入数据库关系图的名称(如fk_xs_cj)并单击“确定” 按钮。关闭数据库图设计窗口,此时在右边的详细信息窗格中 将看到新创建的数据库关系图。

SQL-Server2000完整性的实现

SQL-Server2000完整性的实现

3)修改表时创建CHECK约束:可右击【Orders】表,再选 择【设计表】,打开设计表窗口。在字段Amount上右击,选择 快捷菜单中的【CHECK约束】,弹出【属性】对话框,在【约束 名】文本框内输入约束名称,在【约束表达式】文本框中输入约 束条件,如上图所示,然后点击【关闭】按钮,保存表的设计即 可。
唯一约束
唯一约束又称Unique约束,具有Unique约束的字段的值不 能重复。在使用Primary Key对表中的主键进行了唯一值约束后, 若还需要保证其他字段的数据也具有唯一特征,Unique约束会 很有用。Unique约束既可以用作列级约束,也可以用作表级约 束。它的主要特征如下:
1)一个表可以有多个Unique约束;
2)按照Unique约束的要求,在一个表中不允许任意两处在 被约束的字段上有相同的NULL值,因此最好将被定义了Unique 约束的列定义为非空。
唯一约束的格式为:[CONSTRAINT<:约束名>] UNIQUE [(<列名表>)]
1.使用T-SQL语句在定义表时创建唯一约束 2.使用企业管理器定义表的同时创建唯一约束 1)在企业管理器中,打开【设计表】窗口,设计表结构, 保存表的结构。选定要设置成唯一键约束的列名,然后右键点 击,在弹出的快捷菜单中选择【索引/键】,打开索引【属性】 对话框。如下图所示。

4.使用企业管理器管理默认约束对象
1)创建默认约束对象
在企业管理器的树型结构上有一个名为【默认】的结点, 用鼠标右击该结点并选择快捷菜单中的【新建默认】命令,则 系统弹出【默认属性】对话框,在【名称】文本框内输入约束 名称,在【值】文本框内输入默认值。然后点击【确定】按钮, 即完成默认约束对象的创建。如下图所示:

实验五 数据库完整性一、实验目的掌握SQL Server2000中有关约.

实验五 数据库完整性一、实验目的掌握SQL Server2000中有关约.

图2
用T_SQL语句实施约束
例:为Student表的 “Sex”字段创建一个缺省约束,缺省值为¹男¹
Alter table student Add constraint default_sex Default '男' for Ssex
为了观察添加了缺省约束的效果,你可以用以下方法: 插入一条数据,不指定Ssex的值,如 INSERT INTO Student(Sno,Sname,Sdept,Sage) VALUES ('200215140','Jim','CS',22) 接着用 select * from student where sno='200215140' 查看刚才插入的记录的Ssex字段的值是什么
⑴利用企业管理器进行规则操作 ①创建规则:为Student表中的Sage字段创建一个规则Rule1,使其值大于0且小于
120。
在企业管理器中,展开Student数据库,右击¹规则¹,在弹出的快捷菜单中单击选 择¹新建规则¹,弹出 ¹规则属性¹窗口;在¹名称¹输入框中输入规则名称Rule1,在¹
文本¹输入框中输入规则的文本:@Sage>0 and @Sage<120。
例:为Student表的“Sname”字段增加一个唯一性约束 Alter table Student Add constraint IX_constraint unique nonclustered (Sname)
例:为SC表建立外键,依赖于Student表的fk_S_c约束。
Alter table SC Add constraint fk_S_c Foreign key(Sno) Student(Sno) 例:禁用Student表的“Sdept”的CHECK约束ck_student。 Alter table Student 2规则: 规则是数据库对象之一。它指定向表中某列插入或更新数据时,限制输入新值的 取值范围。规则可以是值的清单、值的范围或值必须满足的条件。 Nocheck constraint ck_student References

实验10 SQL Server 2000数据完整性

实验10  SQL Server 2000数据完整性

实验10 SQL Server 2000数据完整性20102805013 陈尧一、实验目的1.了解约束的应用对数据完整性控制的作用。

2.掌握应用企业管理器设置、修改和删除常见约束的方法。

3.掌握应用T-SQL设置、修改和删除常见约束的方法。

二、实验要求1.在样例数据库中管理相关约束。

2.保存并上交实验结果。

三、实验步骤1.使用不带约束(参考附录D)的脚本创建eshop数据库。

(T-SQL)2.使用修改表命令将members表的m_address设置为非空,添加如下记录,体会NOTNULL约束的使用。

‘wenh’,‘翁红’,‘男’,‘1970-04-20’,NULL,5500.0,‘888888’首先,在查询分析器中输入更新数据表members的SQL代码:再按F5或点击工具栏上的运行按钮“”,运行更新数据表的SQL代码,然后输入插入记录到数据表members的SQL代码:USE eshopINSERT INTO membersV ALUES('wenh','翁红','男','1970-04-20',NULL,5500.0,'888888')执行此段SQL插入记录代码后,将在结果框中显示以下消息,表示执行插入操作失败:服务器: 消息515,级别16,状态2,行1无法将NULL 值插入列'm_address',表'eshop.dbo.members';该列不允许空值。

INSERT 失败。

语句已终止。

3.在members表中,将m_account设置为主键,并查看对应的索引(?),添加如下记录,体会PRIMARY KEY约束的作用。

‘liuzc518’,‘翁红’,‘男’,‘1970-04-20’,‘湖南株洲’,5500.0,‘123456’首先,在查询分析器中输入更新数据表members的SQL代码:USE eshopALTER TABLE membersADD CONSTRAINT pk_members PRIMARY KEY(m_account)再按F5或点击工具栏上的运行按钮“”,运行更新数据表的SQL代码,然后输入插入记录到数据表members的SQL代码:USE eshopINSERT INTO membersV ALUES('liuzc518','翁红','男','1970-04-20', '湖南株洲',5500.0,'123456')执行此段SQL插入记录代码后,将在结果框中显示以下消息,表示执行插入操作失败:服务器: 消息2627,级别14,状态1,行 1违反了PRIMARY KEY 约束'pk_members'。

SQL Server 2000数据库中数据完整性解决方案

SQL Server 2000数据库中数据完整性解决方案

SQL Server 2000数据库中数据完整性解决方案
徐也可
【期刊名称】《职业时空》
【年(卷),期】2008(4)12
【摘要】保证数据库中数据的完整性,在数据库应用中是十分重要的,它是衡量数据库中数据质量的重要标志。

在SQLServer2000中,可以通过"约束"、"规则"、"默认"、"触发器"、"存储过程"等来达到保证数据完整性的目的。

【总页数】2页(P184-185)
【关键词】数据库;SQL;Server;2000;数据完整性;约束;规则;默认;触发器;存储过程【作者】徐也可
【作者单位】江西机电职业技术学院电子与信息工程系
【正文语种】中文
【中图分类】TP311.13;TN783
【相关文献】
1.SQL Server数据库中数据完整性的分析与实践 [J], 陈洁;薛恒威
2.SQL Server 2000在数据规划过程中的数据完整性实现 [J], 汤京弋;张魏群
3.Microsoft SQL Server 2000中的数据完整性机制探讨 [J], 张华伟;杨凯
4.SQL Server2000在数据规划过程中的数据完整性实现 [J], 汤京弋;张魏群
5.Microsoft SQL Server 2000中的数据完整性机制探讨 [J], 张华伟; 杨凯
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

外键约束 、 触发器来保证数据的参照完整性。 关键词 S L evr00 数据完整性 参照完整性 外键约束 触发器 Q re 0 S 2
中图 分 类号 T 3 1 3 P 1. 2 1 文献 标 识 码 A 文章编号 1 13— 6 4 0 1 0 5 1
Th t f r nilne ryo ay i e Daa Re e e t t g i f aI t An lssi SQLSev r 0 0 Daa a e n re 0 t b s s 2
gvsa xm l t a a z o h Q e e 0 0 e srsrf e t neryo a ho g efri e i nea pe o n yehw teS L sr r2 0 nue e rn a itgi f t tru ht o g ky e l v e i l t da h en
一 首先创建用户数据库
商品销售
g o
dle货品表 et e we hr 品名称 = 蒙牛小利乐枕高钙牛奶 ’ e货 ’ 由于对货 品表进行修 改或删除记录的货品 “ 蒙牛小利乐枕 高钙牛奶” 已经被提货表所引用 , 即提货表 中存在“ 蒙牛小利乐
枕高钙牛奶” 的货 品记 录 , 外键 定义中的关键词 0 e t n - 1dle o c q e a tno p ae o c o 决 定对于货品表 中这样 的记 录是不允许 i nu dt n t ne ea

故上述两种操作不 能执行。 如果外键定 货品名称 vrhr4 )N TNU LP I R E 一 设置 进行修 改或删除操作的。 aca(0 O L R MA YK Y, 义中的关键词变成 o e t csae nu dtcsa e上述两个 ndl e acd p a cd , e o ea 主键 字 段 操作能够执行 , 只是提货表 中相关联的记 录将跟着一起 变化 , 即 库存量 i , n t 包含“ 牛小 利乐枕高钙牛奶 ” 蒙 的记录 的货 品名称都将变成 “ 蒙 单价 r l e , a

g 0
c aeal 提货 表 r tt e e b
牛牛奶 1或 包含“ 牛小利乐 枕高钙牛奶 ” ” 蒙 的全部 记录都将被 删除。 可见外键约束即对创建外键 的表有约束作用 , 也对 引用 的 主键表有约束作用 ,约束 的结果保证了两个表数据 的一致性 即
( 货编 号 i e t ( , ) o n lpi r e , 将标 参 照 完 整性 。 提 n i n t 1 1 nt ul r yky 一 td i y ma 2 触发 器 、 识列设置 为主键字段 货 品名称 vrhr4 )f eg e ee n e 货 品表 ( 品 a a( 0 o i k yrf ecs c r n r 货 触发器是一种高功能高开支的数据完整性方法 ,触发器能 名 称 )o ee o c o nud tn co , 一 创 建 外 键 ndl e tno p a o t n tn a i e ai 强 制实现更加复杂的数据完整性。 触发器作用于表上 , 较复杂的 客户 名 称 vrhr4 ) a a(0 , c 约束条件在触发器中定义 ,触发器只能对 它所作用 的表实施所 定 义的完整性约束 , 当触发器所保 护的数据发生变化 时 , 触发器 提货数量 i , n t 会 自动被激活 , 执行触发器中的命令 , 从而保证数据不违背完整 提货 日期 dt iedf lgta ( aem e ute t )一 设提货 日期 的默认 t a de 性约束 。 值为当前 日期 例如 : 了保证输入到提货表 中的所有货 品 , 为 在货品表中都 ) 存在 的, 利用外键来保证。但对于复杂的数据一致性 的要求 , 利 在提货表定义中 , 在货品名称字段上创建了外 键 , 并引用 了 用外键就不 能实现 。例如 , 在提货表中输入记录时 , 要求提货数 货 品表 中的主键字段货 品名称 ,其中 o e t n t n的含义 ndl e oa i e co 且库存量 自动变为库存 量 一提货量 。 这些 问题利 是禁止删除货 品表 中被提货表引用 的记录 , 如 , 例 货品表 中的蒙 量小于库存量 , 用外键是无法实现 的只能用触发器实现 , 触发器程序如下 : 牛小利乐枕纯牛奶这种货品 , 在提货表中有记 录 , 以货品表 中 所 c aer gr 交 r t tge 成 e i 蒙牛小 利乐枕 纯 牛奶所 对应 的记 录不 允 许删 除 ,nu dt n o pa o e o 货 表 ae ne n提 frisr t t atn的含 义是 禁止修 改货 品表 中被提货 表引用 的货 品名 称 。 co i
Z a L ja h o iu n
( p l a o n eh i l H g , i nn cncl iesy F xn A p ct na dT cnc e e La ig i i a Co o Teh iaUnvr t i ui 13 0 0 0) 2
Ab t c T i p p rit d c stec n e to aaitgi , h p fd t tgi n terlt n ld tb s , n sr t hs a e nr u e h o c p f t ne r y tet eo aai e r yi eai a aa a e a d a o d t y n t h o
秉 创外来制束个或个上 过建键强约两表两以表
日 :紊 享 奚
忡 、 据表 据 据中 和之 来 行 数
一 芬夕 芝 , 薮 素 部 萄 吾s s 据

4 办公 自动化 杂 志 0。
cetdt ae 品销售 ra aa s 商 e b
g o
us e
c n tan s tig r . o sr i t,rg e s
} 量 - 凳登 _ 熏 量


— — —
l茎 鐾 ±
壹生 J 箜罂 生 一 塑I
垄 l ! 望I 坌

薹兽— _ —— J _


保 证嘉
I 一 数 r J 据二 一
S ev r 0 0数 据 库 中实 现数 据 QLS re 0 2 参照完整性 的方 法分 析
赵 丽 娟 ( 宁工程技术大 学应 用技术 学院 阜新 13 0 ) 辽 2 0 0
摘 要 文章介绍 了数据完整性的概念 , 关系数据库 中数据完整性 的类型 , 并通过实例重点分析 了在 S LSre 00中如何通过 Q e r 0 v 2
相关文档
最新文档