- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
外键约束FOREIGNKEY-南通大学地理科学学院实验中心欢迎您
第11讲 数据完整性;主要内容:; 数据的完整性指数据库中数据的一致性与正确性。在SQL Server 2000中,可以通过约束、默认、规则、触发器等来达到保证数据完整性的目的。
本讲介绍如何通过约束、默认与规则实现数据的完整性。 ;1 数据完整性概述;1.2 数据完整性有不同的分类方法
1.2.1按照数据完整性的功能将其分为
实体完整性
值域完整性
引用完整性
用户定义的完整性
;实体完整性;值域完整性;引用完整性;用户定义的完整性;1.2.2按照在数据库中实现数据完整性的作用级别
对象级
作用范围是数据库的某个表对象,是在定义表的同时定义的,删除表则失去作用,如约束。
总体级
是作为数据库的对象单独定义的,因此单独存在于数据库中,需要时可以绑定到数据库的表或用户定义的数据类型中,如默认对象、规则。;1.2.3 按照数据完整性的实施方法包括:
约束
默认规则
触发器
存储过程等;2 使用约束; 约束的定义:可以在创建表时定义,也可以在修改表时定义(即向已有的表中添加约束),但同一个数据库中不同约束的名称不能相同。
约束的作用范围
在定义列时定义的约束,仅作用于本列,称为列级约束;
表中单独定义的约束,称为表级约束。
表级约束的声明与列的定义无关,当一个约束作用于一个以上的列时,必须使用表级约束。 ;
通常在表中将一个列或列组合的数据设置成具有各不相同的值,以便能惟一地标识表中的每一行。
这样的一列或多列称为表的主键,通过它可强制实现表的实体完整性,消除表的冗余数据。 ;主键具有如下特性:
不重复性
非空性
惟一性 ;(1)定义列级主键
命令格式:
CREATE TABLE table_name
( column_name data_type
[ DEFAULT default_expression ] | [ IDENTITY [ ( seed ,increment ) ] ]
[ [ CONSTRAINT constraint_name ]
PRIMARY KEY [ CLUSTERED | NONCLUSTERED ]
] [,... n]);命令说明:
DEFAULT为默认值约束的关键字,用于指定其后的default_expression为默认值表达式。
IDENTITY [ ( seed,increment)]表示该列为标识列或称自动编号列。
CONSTRAINT constraint_name 为可??项,关键字CONSTRAINT用于指定其后面的约束名称constraint_name。如省略本选项,则系统自动给出一个约束名。建议选择约束名以便于识别。
PRIMARY KEY表示该列具有主键约束。; CLUSTERED| NONCLUSTERED表示建立聚簇索引或非聚簇索引,省略此项则系统默认为聚簇索引。如果没有特别指定本选项,且没有为其他 UNIQUE 惟一约束指定聚簇索引,则默认对该 PRIMARY KEY 约束使用 CLUSTERED。;(2)定义表级主键
表级主键一般位于表定义中所有列定义之后,与列定义可以用逗号相隔;命令格式:
CREATE TABLE table_name
( column_name data_type [ ,... n ]
[ [ CONSTRAINT constraint_name ]
PRIMARY KEY [ CLUSTERED | NONCLUSTERED ]( column_name [ ,... n ] )
]);命令说明:
( column_name [ ,...n ] )表示该表级主键可以作用于组合在一起的多列所构成的列组合。 ;2.1.2 更改表的主键约束;命令格式:
ALTER TABLE table_name
ADD column_name data_type
[DEFAULT default__expression] | [ IDENTITY [ ( seed , increment ) ] ]
[ CONSTRAINT constraint_name]
PRIMARY KEY [ CLUSTERED | NONCLUSTERED ];命令说明:
ALTER TABLE 只允许添加可包含空值或指定了 DEFAULT 定义的列。因为主键不能包含空值,所以需要指定 DEFAULT 定义,或指定IDENTIT
文档评论(0)