数据完整性约束

数据完整性约束定义:是指数据的正确性和相容性,为了防止数据库中存在不符合语义的数据,防止数据库中存在不正确的数据。在关系型模型中提供了三种规则:实体完整性,参照完整性,和用户定义完整性。

实体完整性规则实体是一个数据对象,是指客观存在并可以相互区分的事务,如一个学生或一个职员。实体完整性规则是指关系的主属性,即主键的组成不能为空,也就是关系的主属性不能为空值NULL。实体完整性是通过主键约束和候选键约束来实现的。

    1.主键约束

主键可以是表中的一列也可以是表中多个列的组合,多个列组合而成的主键也叫复合主键。

规则·:

(1)每个表只能定义一个主键;

(2)唯一性原则。主键的值必须能够唯一标识表中的每一行记录。

(3)最小化原则,复合主键·不能包含不必要的多余列;

(4)一个列名在复合主键的列表中只能出现一次。

作为列的完整性约束:

CREATE TABLE(

字段 类型()not null primary key;

...);

作为表的完整性约束:

CREATE TABLE(

字段 类型()not null,

。。。

PRIMARY KEY(字段,字段2...)

);

     2.候选键约束:

定义:若一个属性集能唯一标识元组,且不含多余的属性,那么这个属性集称为关系的候选键。任何时候候选键的值必须是唯一的,且不能为空NULL。其可以在CREATE TABLE 和ALTER TABLE 使用关键字UNIQUE来定义。

候选键与主键区别:(1)一个表只能创建一个主键,但可以定义多个候选键。(2)定义主键系统会主动创建PRIMARY KEY 索引,而定义候选键约束,系统会自动创建UNIQUE索引。

参照完整性规则:即魔偶关系的属性值需要参照另一关系的属性和值,这就叫参照。参照完整性规则就是定义主键和外键之间额引用规则,它对关系间引用数据的一种限制。目前只有InnoDB引擎支持外键约束。

InnoDB引擎类型中声明外键基本语法格式如下:

FOREIGN KEY (INDEX_COL_NAME,...) REFERENCE_DEFINITION;

FRFERENCE_DEFINITION 主要用于定义外键所参照的表,列,参照动作的声明和实施策略:

REFERENCES TBL_NAME [(COL_NAME(LENGTH) ASC|DESC)]

[MATCH FULL|MATCH PARTIAL|MARTCH SIMPLE]

[ON DELETE REFERENCE_OPTION]

[ON UPDATE REFERENCE_OPTION];

REFERENCE_OPTION选项有以下几种:RESTRICT(限制策略:当要删除或更新被参照表中被参照列上,并在外键中出现的值时,系统拒绝对被参照表的删除或更新操作。)CASECADE(级联策略:从被参照表中删除或更新数据记录时,自动删除或更新参照表中匹配的记录行。)SET NULL (置空策略:当从被参照表中删除或更新记录行时,设置参照表中与之对应的外键列的值为NULL.这个策略需要被参照表中外键列没有声明限定词NOT NULL。)NO ACTION(不采取实施策略:当一个相关的外键值在被参照表中,删除或者更新被参照表中键值的动作不被允许。该策略的动作语言与RESTRICT 相同)

用户定义完整性规则:针对某一应用环境的完整性约束条件,其反映了某一具体应用所涉及的数据要求。

1:非空约束 NOT NULL;

2:CHECK约束:CHECK(表达式)

3:触发器

命名完整性约束:定义约束的同时对约束进行命名。PRIMARY KEY的名称只能是PRIMARY;

语法:CONSTRAINT 约束名

PRIMARY KEY 短语|FORIENGN KEY 短语|CHECK 短语

删除完整性约束:ALTER TABLE TABLE_NAME DROP PRIMARY KEY |FORIEGN KEY|... 约束名;

修改完整性约束:先删除约束,再添加相同约束。ALTER TABLE TABLE_NAME ADD CONSTRAINT ...;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值