MySQL之数据完整性

1.了解什么是数据完整性
答:数据完整性是指存储在数据库中的数据,应该保持一致性和可靠性。
假如银行卡余额,正常没钱是0,但却是负的,说明没钱了还能取钱,这就存在很大漏洞了。

2.关系模型允许定义三类数据约束
答:它们是实体完整性、参照完整性以及用户定义的完整性约束,其中前两种完整性约束由关系数据库系统自动支持。
【实体完整性】:实体就是现实世界中具体的某个对象,RDBMS中一行代表一个实体,
实体完整性是保证每一个实体都能被区别。例如人对应的身份证。
举例:201603主键重复,不可导入。
在这里插入图片描述

约束方法:唯一性约束,主键约束,标识列,其实都是同个意思。

【参照完整性】:主要是表与表之间的关系,可以通过外键来实现。例如学生在成绩排名表A找得到成绩,
而在成绩表B找不到,通额外的表来参照。参照完整性要求关系中不允许引用不存在的实体。
举例:主表A无学号2016088的学生,无法在从表B中导入2016088的数据。
在这里插入图片描述

约束方法:外键约束(外键就是其他表的主键)

【用户自定义完整性】:借助存储过程和触发器实现。例如限定账户余额是大于等于0的。
举例:由于设置了账户余额大于0,数据李四账户余额小于,0,无法导入。
在这里插入图片描述

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

【域完整性】:通过对列的输入进行限制,保证不能输入无效的值。如数据类型,格式,或值的范围。如果一个人活过了上千岁,正常不。
约束方法:限制数据类型,检查约束,默认值,非空约束。、
举例:2016061003超过限制的7位数,不可导入。
在这里插入图片描述

3.掌握如何保证数据完整性
|==================================================================
#唯一性约束
在MySQl中,可以使用关键字Unique (独一无二的)实现字段的唯一性约束,从而保证实体的完整性。
•Unique 意味着任何两条数据的同一字段不能有相同的值。
•一个表中可以有多个Unique约束。

#在创建表时添加唯一性约束

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

创建一个person表,数据有姓名和身份证,并设置身份证为主键
在这里插入图片描述

设置了主键,身份证号重复,无法导入

在这里插入图片描述

|==================================================================
#外键(Foreign Key)约束
•定义了表之间的一致性关系,用于强制参照完整性。
•定义了对同一个表或其他表的列的引用,这些列具有Primary Key或Unique约束。

#主表:学生表

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

#从表:

create table stu_course(
	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)
);

表stu中不存在王五的学号,表stu_course插入数据失败
插入数据

表stu中存在王五的学号,表stu_course插入数据成功
在这里插入图片描述

注意事项:插入数据时,【先】在主表插入数据;删除数据时,【先】删除从表的数据。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值