数据库原理与SQL教案(6)

2020-08-09 18:19

学习情境4 SQL Server 2000数据完整性实现(6课时) 一、【教学目标】

1. 理解约束,默认和规则;

2. 掌握约束,默认和规则的创建及应用。 二、【教学内容】

4.1数据完整性 4.2使用约束 4.3使用规则

4.4使用默认

4.5约束和默认/规则的比较 4.6上机实训

三、【教学重点、难点】 重点:1、创建规则 默认 约束; 2、绑定规则默认约束

难点:1、用sql 语句创建 使用约束 默认和规则 2、约束,默认,规则的比较 四、【教学过程】

第4章 SQL Server 2000数据完整性实现 4.1 数据完整性

实体完整性:实体完整性把表中的每行看作一个实体,也可以称为表完整性,它要求所有行都具有唯一标识。

域完整性:也称列完整性,要求域中指定列的数据具有正确的数据类型、格式和有效的数值范围。域完整性通过默认值、FOREIGN KEY、CHECK等约束及默认、规则等数据库对象来实现。

引用完整性:引用完整性维持被参照表和参照表之间的数据一致性,它通过PRIMARY KEY约束和FOREIGN KEY约束来实现。引用完整性确保键值在所有表中一致。这样的一致性要求不能引用不存在的值,如果键值更改了,那么在整个数据库中,对该键值的所有引用要进行同样的更改。

参照完整性:引用完整性维持被参照表和参照表之间的数据一致性,它通过PRIMARY KEY约束和FOREIGN KEY约束来实现。

用户定义的完整性(User-defined Integrity):用户定义的完整性允许用户定

21

义不属于其他任何一类完整性的特定规则。各类完整性均支持用户定义的完整性。

4.2 使用约束

约束是独立于表结构的,可作为数据库定义部分在CREATE TABLE语句中声明,可以在不改变表结构的基础上,通过ALTER TABLE语句添加或者删除。当表被删除时,表中所有的约束定义也将被删除。

建立和使用约束的目的是保证数据的完整性,约束是SQL Server强制实行的应用规则,它是通过限制列中数据、行中数据和表之间的时间来保证数据的完整性。约束(Constraint)限制了用户可能输入到表或字段中的值。SQL Server的约束包括:DEFAULT、CHECK、UNIQUE、PRIMARY KEY和FOREIGN KEY,它们均有各自不同的目的。这就需要用户根据自己的需要,选择和使用约束。 4.2.1 DEFAULT约束 1.DEFAULT约束的语法格式 CONSTRAINT 约束名

DEFAULT { 常量表达式 | NULL } [ FOR 字段名 ] 2.示例

/*默认值的表达书写格式*/ ALTER TABLE 学生基本信息表 ADD

CONTRAINT 性别 DEFAULT'男' FOR 性别

此例说明如果没有指定某个学生的“性别”,则系统默认为 '男'。 4.2.2 CHECK约束 1.CHECK约束的语法格式 [ CONSTRAINT constrain_name ]

CHECK [ NOT FOR REPLICATION ] ( logical_expression )

逻辑表达式可以是AND或者OR连接的多个简单逻辑表达式构成的复合型逻辑表达式,通过任何基于逻辑运算符返回结果TRUE或FALSE的逻辑表达式来创建

22

CHECK约束。 2.示例

/*增加一个CHECK约束*/ USE afu GO

ALTER TABLE student ADD

CONTRAINT studentid CHECK

( studentid LIKE '[0-9][0-9][0-9]')

该示例中,输入学生的学号被限定为一个三位数,且该三位数的每一位只能在0~9的范围内,使用字母以及其他符号是无效的。 4.2.3 UNIQUE约束 1.UNIQUE约束的语法格式 [ CONSTRAINT constraint_name ]

UNIQUE [ CLUSTERED | NONCULUSTERED ] [ WITH FILLFACTOR = fillfactor ] [ ON { filegroup | DEFAULT } ] ] 2.示例

/*在表course中添加一个UNIQUE约束*/ USE afu GO

ALTER TABLE Course ADD

CONTRAINT u_coursename_no

UNIQUE NONCLUSTERED ( coursename_no )

该例在表Course中的课程名列上创建一个UNIQUE约束。这样,就不能在该表中插入同样课程名的数据了。 4.2.4 PRIMARY KEY约束 1.PRIMARY KEY约束的语法格式

23

[ CONSTRAINT constraint_name ]

PRIMARY KEY [ CLUSTERED | NONCLUSTERED ] { ( column [ ,?n ] ) } [ WITH FILLFACTOR = fillfactor ] [ ON { filegroup | DEFAULT } ] ] 2.示例

/*添加一个主键*/ USE afu GO

ALTER TABLE 学生基本信息表 ADD

CONSTRAINT PK_studentid

PRIMARY KEY CLUSTERED (studentid)

该示例在表“学生基本信息表”中增加一个主键,并指定studentid(学号)列为主键值,同时创建了一个聚簇索引,这意味着以后不能在该表中插入学号两个相同的学生基本信息。 4.2.5 FOREIGN KEY约束 1.FOREIGN KEY约束定义格式 [ CONSTRAINT constraint_name ] FOREIGN KEY [ ( column [ ,?n ] ) ]

REFERENCES ref_table [ ( ref_column [ ,?n ] ) ] [ NOT FOR REPLICATION ] 2.示例

/*增加一个FOREIGN KEY*/ USE afu GO

ALTER TABLE grade ADD

CONTRAINT FK_studentid

24

FOREIGN KEY ( studentid ) REFERANCES student ( studentid )

上例在表grade中增加一个FOREIGN KEY约束,该约束把表grade中的studentid与表student中的studentid联系起来,在这两个表之间创建一种约束关系。 4.3 使用规则

规则是一种数据库对象,与默认的使用方法类似,规则可以绑定到一列或者多列上,也可以绑定到用户定义的数据类型上,其作用类似于CHECK约束——为INSERT语句指定可接受的数据值的范围。CHECK 约束作为 CREATE TABLE 语句的一部分进行指定,而规则可以作为单独的对象进行创建,然后绑定到列上。 4.3.1 创建规则 1.创建规则的语法格式 CREATE RULE rule_name AS condition_expression 2.参数说明

rule_name是新规则的名称,规则名称必须符合标识规则,可以选择是否指定规则所有者的名称。

condition_expression是定义规则的条件。规则可以是WHERE子句中的任何有效的表达式,并且可以包含诸如算术运算符、关系运算符和IN、LIKE、BETWEEN之类的元素。 3.示例

/*创建学生的年龄必须在一定范围的规则*/ CREATE RULE age_rule AS

/*创建交通灯颜色的规则*/ CREATE RULE colour_rule

AS @colour IN ('red', 'yellow','green') 4.3.2 绑定规则 1.绑定规则的语句

sp_bindrule [ @rulename = ] 'rule' ,

25


数据库原理与SQL教案(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2013级信号与系统实验(终版)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: