当前位置:网站首页>MySQL约束关系,你必须要知道的知识点!
MySQL约束关系,你必须要知道的知识点!
2022-08-09 09:29:00 【农场主er】
创建表的时候往往给字段加一些约束,以保证数据的 合法性、有效性、完整性。
1、非空约束:not null
非空约束针对某个字段设置其值不能为NULL。创建表时如果有字段声明如下:字段名 数据类型 not null,表明插入数据时必须要给这个字段赋值,如果没有就会报错。
2、唯一约束:unique
唯一性约束可令某个字段不可重复。创建表时如果有字段声明如下:字段名 数据类型 unique,表明插入时这个字段的值不可与已经存在的数据重复,但是均可以为NULL,称为列级约束。
如果想令几个字段合起来不可重复,可以这样声明:unique(字段名,...),称为表级约束,非空约束没有表级写法。
3、主键约束:primary key
3.1 pk的作用
具有pk的字段既不能重复,也不能为NULL。创建表时的pk声明如下:字段名 数据类型 primary key,称为单一主键,如果采用表级约束:primary key(字段名,...)称为复合(联合)主键。
字段加上pk后称为主键字段,主键字段中的每一个值都是主键值,主键值是记录在表中的唯一标识,任何一张表中都应该有主键,且pk只能有一个。
3.2 主键的分类
根据主键的性质可划分为自然主键和业务主键。前者的主键字段独立,与具体的业务没有关联;后者主键值和业务挂钩,比如银行卡号。
业务主键不推荐使用,因为业务后续发生改变的话,主键值随之变化,可能导致主键值相同,但是这是不允许的,反之业务也无法改变。
3.3 主键值自增
实际业务中主键值往往由服务端给出,主键值从0开始,每次插入一条数据主键值自动增1。创建表时的声明如下:字段名 数据类型 primary key auto_increment,如果插入数据时手动给主键值赋值,下一次自增在已赋值的基础上进行。
4、外键约束:foreign key
外键可以维护表之间的关系,如果表中的某个字段为外键字段,那么外键值必须来自所选参照表对应的字段值,外键值可以为NULL。
例如有两张表student:id(pk)、sname、classno和class:id(pk)、cno(unique)、cname,其中student表中的classno字段值必须来自class表中的cno,外键约束为foreign key(classno) references class(cno),建表语句如下:
create table class(
id int primary key,
cname varchar(255),
cno int unique
);
create table student(
id int primary key,
sname varchar(255),
classno int,
foreign key(classno) references class(cno)
);
注释
- 存在外键的表是子表(从表),参照的表是父表(主表),即两张表存在主从关系;
- 父表中作为参照的字段可以不是主键,但至少要有
unique约束。因为一旦作为参照的字段值有重复,子表中的外键值无法确认依赖父表的哪一条记录; - 创建表和添加数据的顺序:先父表后子表;
- 删除表和删除数据的顺序:先子表后父表。
欢迎评论区交流~
边栏推荐
猜你喜欢
随机推荐
常用命令之思科常用基础配置
日期操作比较全面得代码
.ts 音频文件转换成 .mp3 文件
1. The concept of flow
性能测试报告包括哪些内容?模板范文哪里找?看这里
软件测试面试思路技巧和方法分享,学到就是赚到
7.FileFilter interface
6.File类
条件和递归
static_assert报错为什么?
功能自动化测试实施的原则以及方法有哪些?
类 对象 属性 方法 类的成员
网络安全入门基础:IP地址
RPC服务远程漏洞
软件测试个人求职简历该怎么写,模板在这里
WAVE SUMMIT 2022深度学习开发者峰会
3. Practice the Thread
Go-goroutine 的那些事
4.字符流
Do you know the basic process and use case design method of interface testing?






