Express-学习之路 18,mysql-约束

234 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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 数据库中约束。