[Mysql]数据库约束


前言

数据库约束,在实际应用中,由于某些特定的要求,例如学生的学号不能为空,学生表中的班级id,在班级表中要能存在,所以,为了保证数据的完整性,数据库设置了数据库约束功能。下面,我们来康康有哪些约束和约束的功能吧~


1. 数据库约束

1.1 not null

非空约束,避免某些重要数据为空。

1.2 unique

有些数据是不能有重复的,例如没有学号重复的同学。上述两个约束将在后面进行演示

1.3 primary key,主键约束

主键,用主键约束的数据非空且不能重复。
一个表只能有一个主键。
not null 与 primary key联合使用可起到主键的作用。
如下图所示·。
在这里插入图片描述
联合主键,将多个列放在一起共同作为主键

create table student(id int, name varchar(20), classid int,primary key(id,name));

效果如下图,意思是只要知道这个学生的id和name就可以找到这个学生,当然这里是不合法的,因为这里将id和name设置成联合主键,学生的id可能出现重复,不合法.

在这里插入图片描述
自增主键
例如学生的学号,不能重复,为了保证这种性质,我们设置了自增主键.
在使用自增主键时,学生的学号可以为null,系统会按顺序为学生自动设置学号.
如下图所示
在这里插入图片描述
注意,若是自己设置了一个id,那么自增主键下次会在这个id后面自增,如下图,我们自己设置了一个同学id为5,那么下次使用自增主键时,id为6.
在这里插入图片描述

1.4 default,设置默认值

有些数据,暂时不确定的时候可以不插入,这个default可以将为设置的值标记为default.如下图,只设置了id,name被填上默认值"无名氏"

在这里插入图片描述

1.5 foreign key 外键约束

外键约束针对多个表之间的约束.例如,在学生表中设置classid,在class表中设置id,则学生表中的classid号,在class中的classid一定要存在,否则则报错. 这里学生表为主表,班级表为副表
将class表的classid设置为student的外键

create table student(id int primary key auto_increment,name varchar(20),classid int,foreign key(classid) references class(id));

如下图,在学生表插入班级号1,但由于班级号的id中还没有1,不匹配,报错.
在这里插入图片描述
所以,在设置学生的classid时,要保证在class中,有和classid匹配的值.
外键约束也约束副表,由于class中的id被学生表引用,那么被引用class的id不能被删除,否则报错.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值