MYSQL数据完整性

数据完整性

是指存储在数据库中的数据,应该是保持一致性和可靠性

关系模型允许定义三类数据约束,他们是 实体完整性、参照完整性以及用户定义的完整性约束,其中前两种完整性约束由关系数据库系统自动支持

实体完整性:实体就是现实世界中的某个对象,RDBMS中一行代表一个实体。实体完整性就是保证每个实体都能被区别

例如:用户信息不完整。缺少数据

域完整性:域完整性主要是对列的输入有要求,通过限制列的数据类型、格式或值得方式来实现

参照完整性:主要是表与表直接的关系,可以通过外键来实现

用户自定义完整性:借助存储过程和触发器实现

实体完整性:

​ 要求每张表都有唯一标识符,每张表中的主键字段不能为空且不能重复

​ 约束方法:唯一性约束、主键约束、标识列

域完整性:

​ 针对某一具体关系数据库的约束条件,它保证某些列不能输入无效的值。

​ 域完整性是指列的值域的完整性,如数据类型、格式、值域范围、是否允许空值等。

​ 约束方法:限制数据类型、检查约束、默认值、非空约束

参照完整性:

​ 要求关系中不允许引用不存在的实体。

​ 约束方法:外键约束 (外键:一般来说是其他表的主键)

用户自定义完整性:

​ 针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的要求。

​ 约束方法:规则、存储过程、触发器

唯一性约束: unique关键字,实现唯一性约束,保证实体完整性。一个表中可以有多个unique约束

外键(FOREIGN KEY)约束定义了表之间的一致性关系,用于强制参照完整性。
外键约束定义了对同一个表或其他表的列的引用,这些列具有PRIMARY KEY或UNIQUE约束。

####################################################################

实例:

create table person(
id int not null auto_increment primary key comment ‘主键id’,
name varchar(30) comment ‘姓名’,
id_number varchar(18) unique comment ‘身份证号’
);

这时插入身份证号相同的数据,系统会报错:

mysql> insert into person (name,id_number)value(“张三”,201901);
Query OK, 1 row affected (0.02 sec)

mysql> insert into person (name,id_number)value(“李四”,201901);
ERROR 1062 (23000): Duplicate entry ‘201901’ for key 'id_number

外键约束:

主表:

create table stu(
stu_no int not null primary key comment ‘学号’,
stu_name varchar(30) comment ‘姓名’
);

成绩表:

create table sc(
id int not null auto_increment primary key comment ‘主键id’,
stu_no int not null comment ‘学号’,
course varchar(30) comment ‘课程’,
grade int comment ‘成绩’,
foreign key(stu_no) references stu(stu_no)
);

在插入成绩表中的数据时,要求学号要在主表中存在。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值