实体完整性

一、mysql数据完整性约束

数据完整性约束的概念:
在表中定义完整性约束是作为数据定义的一部分,定义了完整性约束,数据库会随时检测处于更新状态的数据库内容是否符合相关的完整性约束,保证数据的正确性与一致性。完整性约束既能有效地防止对数据库的意外破坏和非法存取,提高完整性检测的效率,还能减轻数据库编程人员的工作负担。
常用的约束条件有6种:主键(primary key)约束、外键(foreign key)约束、唯一性(unique)约束,默认值(default)约束、非空(not null)约束以及检查(check)约束。
数据完整性约束包括:定义实体完整性(主键约束、候选键约束)
定义参照完整性(外键约束)
用户定义完整性(非空约束、默认值、自增等)

1.定义实体完整性:
实体完整性规则是指关系的主属性不能取空值,即主键和候选键在关系中所对应的属性不能取空值,实体完整性通过主键约束和候选键约束来实现的。
1)主键(primary key)约束:表中某一列或某些列构成的一个组合,多个列组合而成的主键称为复合主键,主键遵循的规则如下:
a.每一个表只能定义一个主键;
b.主键的值(键值)能够唯一标识表中的每一行记录,且不能为null,即表中两条不同的记录在主键上不能具有相同的值,这是唯一性原则;
c.复合主键不能包含不必要的多余列,即当从一个复合主键中删除一列后,如剩下的列仍然满足唯一性原则,那么这个复合主键是不正确的,这是最小化原则;
d.一个列名在复合主键的列表中只能出现一次。
e.定义主键约束后,数据库会自动为主键创建一个唯一索引,用于在查询中使用主键对数据进行快速检索,该索引名的默认为primary,也可以重新命名;
主键约束可以在CREATE TABLE或ALTER TABLE语句中使用关键字PRIMARY KEY来实现,主要方式有两种:
一种是列级完整性约束,只需在表中某字段定义后加上关键字primary key即可 。
一种是表级完整性约束,需要在表中所有字段定义后添加一条primary key语法格式的子句。

列级完整性约束方式定义主键,即在创建表时,在某个字段后加关键字primary key。

表级完整性约束方式定义主键,即创建表时,表中所有字段定义后添加一条primary key(列名1,…,列名n),适合定义多列所构成的主键。

表级完整性约束方式定义主键,并指定主键约束名称,适合定义多列所构成的主键。
语法:constraint 约束名字 primary key(列名1,…,列名n)。

添加主键约束用法:alter table语句中使用关键字primary key来实现。
添加主键约束方式,定义完数据表后可以再添加。
语法:alter table 表名 add primary key(列名1,…,列名n);
或 alter table 表名 add constraint 约束名字 primary key(列名1,…,列名n);

*删除主键约束用法:alter table语句中使用关键字primary key来实现。
删除主键约束时,表中只能定义一个主键,无论主键约束有没有名称,都使用以下用法:
语法:alter table 表名 drop primary key;

2)唯一(候选键)约束:如果希望表中的某个字段值不重复,是唯一的值,可以为该字段添加唯一性约束。一张表中可以有多个唯一性约束,且满足唯一性约束的字段可以取null值,主键约束与候选键约束的区别如下:
a.每一个表只能定义一个主键,但可以定义多个候选键;
b.定义主键的列不能为null,定义为候选键允许null存在;
c.定义主键约束时,系统会自动产生主键索引,定义候选键时,系统自动产生候选键索引。

列级完整性约束方式定义候选键,即创建表时,在某个字段后加关键字unique。

表级完整性约束方式定义候选键,并指定候选键约束名称,适合定义多列所构成的候选键。
语法:constraint 约束名字 unique(列名1,…,列名n)。

*添加候选键约束用法:alter table语句中使用关键字unique来实现。
添加候选键约束方式,定义完数据表后可以再添加。
语法:
alter table 表名 add constraint 约束名字 unique(列名1,…,列名n);
或 alter table 表名 add unique(列名1,…,列名n);

*删除候选键约束用法:alter table语句中使用关键字unique来实现。
删除候选键约束时,实际删除的是唯一性索引,应使用drop index子句删除,如果没有给约束命名,自动将字段名定义为索引名,其用法如下:
语法:alter table 表名 drop index 约束名|候选键字段名;

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凡陌熙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值