当前位置:网站首页>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约束。因为一旦作为参照的字段值有重复,子表中的外键值无法确认依赖父表的哪一条记录; - 创建表和添加数据的顺序:先父表后子表;
- 删除表和删除数据的顺序:先子表后父表。
欢迎评论区交流~
边栏推荐
猜你喜欢
自动化测试框架有哪几种?搭建的思路是什么?一篇文章让你彻底了解自动化

Cisco common basic configuration of common commands

STM32F103实现IAP在线升级应用程序

try catch 对性能影响

Ontology Development Diary 05-Strive to Understand SWRL (Part 2)

Another implementation of lateral view explode

常用功能测试的检查点与用例设计思路
功能自动化测试实施的原则以及方法有哪些?

本体开发日记04-努力理解protege的某个方面
软件测试面试常见问题及答案(发散思维、接口、性能、概念、)
随机推荐
软件测试面试中,面试官问你一些比较“刁难”的问题你会怎么回答
白盒测试的概念、目的是什么?及主要方法有哪些?
本体开发日记03-理解代码
Ontology Development Diary 05-Strive to Understand SWRL (Part 2)
Ontology development diary 04 - to try to understand some aspects of protege
ORA-00600 [16703], [1403], [20]问题分析及恢复
mysql简单安装
1. The concept of flow
pycharm在创建py文件时如何自动注释
BlockingQueue理论普
[Machine Learning] Basics of Data Science - Basic Practice of Machine Learning (2)
Consolidation of Questionnaire Questions and Answers
Lecture 4 SVN
m个样本的梯度下降
4. Character stream
"The camera can't be used" + win8.1 + DELL + external camera + USB drive-free solution
unittest测试框架原理及测试流程解析,看完绝对有提升
Go-接口的那些事
在anaconda环境中配置cuda和cudnn
RPC服务远程漏洞