MySQL中的数据库约束

数据库约束是为了更好的维护数据,分别有以下几种约束类型

约束类型说明
NOT NULL表示某列不能存储 NULL值
UNIQUE保证了某列的每行必须是唯一的值
DEFAULT规定了没有给列赋值时的默认值
PRIMARY KEYNOT NULL 和 UNIQUE 的结合版,确保了某个或两个及以上的列有唯一标识
FOREIGN KEY确保了表中的值匹配另一个表的值的参照完整性
CHECK(了解)保证列中的值符合指定的条件,MySQL使用时不报错,但忽略该约束

非空约束

在这里插入图片描述
在创建表时的某个列后加入 not null 后,就形成了非空约束,该列的值不能为null

在这里插入图片描述
当查询表的结构的时候,NULL那列就会变成NO,代表该列不能存储 NULL值

唯一约束

在这里插入图片描述
在某列后面协商 unique 关键字就可以形成唯一约束,此时该列的每一行只能存储唯一的值

在这里插入图片描述
当插入两个相同值时就会报错
在这里插入图片描述

默认值约束

当我们对部分列插入数据时,未被赋值的列会存储一个NULL
在这里插入图片描述

由表的结构中我们也能够看出来

在这里插入图片描述

在创建表时可以指定默认值

在这里插入图片描述

此时只插入id,那么姓名就会是无名氏
在这里插入图片描述

主键约束

当一个列同时拥有 not null 和 unique
在这里插入图片描述

他们组合在一起相当于是 primary key,此时运行后 id 就被设置为了主键

在这里插入图片描述

在这里插入图片描述

对于整数类型的主键,一般可以搭配自增auto_increment来使用,当未指定插入数据时,就会插入当前编号最大值+1

在这里插入图片描述

在这里插入图片描述

每次插入一个新数据时,都会自动插入一个新 id 的值,id会自动自增。

在这里插入图片描述
值得注意的是,id可能会出现不连续的情况,这是因为id在执行某些错误语句前也会自增,并且删除数据后,id并不会随之减少

外键约束

有一张学生表,除了存储姓名外还存储了他们的班级
在这里插入图片描述

有一张班级表,每个班级id对应了一个班级

在这里插入图片描述

但是当我们插入一个错误的班级id 时,也会成功插入到表中

在这里插入图片描述

所以这与我们的预期不符

所以需要用到外键约束

外键约束语法:
foreign key (字段名) references 主表(列名)

在这里插入图片描述
一定需要注意的是 先创建 class 表,然后再创建student表

有了外键约束,那么当插入一个不存在的班级就会报错
在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值