持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第18天,点击查看活动详情
Express-学习之路 18,mysql-约束
引言
本系列会以我的一个理解,来介绍并开始学习 Express。
中间会插入自己所联系到的 乱七八糟 的 知识点。
约束
什么是约束?
主要是针对数据库表中的数据。对这些数据进行限制,使得我们的数据符合某种规则,保证了数据格式的准确。
分类
主要有下面 7 个常用的
-
not null 非空约束
代表的是,该字段数据不能为空,不能存在 null 值
-
unique 唯一约束
代表的是,这个字段 这一列 中,每个数据都是唯一的,不能够重复(手机号,身份证号)
-
primary key 主键约束
代表的是,这一行 数据,唯一的标识。(非空 且 唯一)
-
default 默认约束
代表的是,如果该字段数据为空时,则采用 默认值
-
foreign key 外键约束
代表的是,至少两个表之间,进行连接。
-
check 检查约束
代表的是,保证字段值满足某一个条件 0<age<=Y
-
auto_increment 自动增长 +1
外键约束
在所有的约束中 最重要的就是 外键约束,下面学习下。
-
外键的主要理解为:
一个表中的某个字段里的所有值,与另一张表的 主键 相关联,这个 字段 就称之为这个表的外键。
-
这两张表的关系为:
外键 所在的表 属于 子表,从表。
外键 所指的表 属于 父表,主表
添加外键关联
这里展示下如何将两张表进行外键关联
-
xxx 外键表,即 子表 的 表名
-
b1 设置 外键名称(这个很重要)
-
a1 外键的这个 字段名
-
yyy 父表 的表名
-
a2 父表 中的主键 字段名
alter table xxx add constraint b1 foreign key(a1) references yyy(a2)
删除外键关联
如果此时不需要外键关联的话,那么需要删除外键关联关系。
alter table xxx drop foreign key(b1)
这里注意,在删除的时候,删除 外键名称 b1。
强制删除
一般我们删除主表中的数据时,如果有外键的关联的话,默认是不让删除。
如果非要强制删除主表中某个数据的话
-
那么需要这个 cascade 关键字
它会将 主表这个值,所关联的外键的这行数据 将也会被删除。
alter table xxx add constraint b1 foreign key(a1) references yyy(a2) on update cascade on delete cascade上面这种方式,直接把子表的数据也删除了,有点太暴力
-
set null 这种形式会好点
它会将 主表这个值,所关联的外键的值 置为 null
alter table xxx add constraint b1 foreign key(a1) references yyy(a2) on update set null on delete set null
总结
学习了 mysql 数据库中约束。