MySQL约束constraint

记得有一次,我在一个项目中负责数据库设计。
表中有一个字段是用户 ID。
我一开始没有添加主键约束。
结果在输入数据的时候,发现有重复的。
那是下午两点,我坐在办公室的办公桌前,巨大的落地窗旁边,阳光照在键盘上。
我尝试使用ALTER TABLE添加PRIMARY约束,数据问题得到解决。
后来我就想,如果我加个PRIMARY KEY约束,是不是就会出现这个问题呢?等等,还有别的事。
我突然看到那个项目的数据库设计考虑了添加一些特殊的约束,以避免其他领域的数据重复。

MySQL约束的分类、作用及用法

说白了,MySQL约束就像给数据库表穿上了一层保护衣,保证数据的安全性和准确性。
其实很简单。
这些约束主要分为几类:主键、自增、非空、唯一、默认、补零和外键。

我们先来说最重要的一点,主键约束。
比如我们去年跑的项目中,我们对用户表的主键字段设置了主键约束,这样每条用户记录都是唯一的,就像每个用户的身份证号一样。
还有一点是,自动增加约束在自动生成ID时特别有用。
比如我们给订单表的主键设置了自增,大约有3 000级数据。
每次插入新订单时,ID都会自动加1
一开始我以为非空约束和唯一约束很简单,后来发现是错误的。
非空约束保证字段不能为空,而唯一约束保证字段值不能重复。
等等,还有一件事,默认约束可以在插入数据时自动填充默认值,这对于不需要用户输入的字段来说非常方便。

很多人没有注意到这一点。
零填充约束对于数字字段(例如电话号码)特别有用。
如果输入的数字小于定义的长度,系统会自动在前面补零以保持统一的格式。
至于外键约束,它就像两个表之间的一座桥梁,保证数据的一致性。
比如订单表和客户表中,通过外键约束,我们可以保证订单中的客户ID存在于客户表中。

最后,我想提醒您一个容易陷入的陷阱。
使用外键约束时要注意。
如果删除了父表中的记录,子表中的外键记录应该如何处理? 是级联删除还是设置为NULL,这个需要根据业务逻辑来决定。
我觉得值得一试,在实际操作中多加练习,这样才能更好的掌握这些约束的使用。

mysql如何管理外键约束

在表定义时直接创建外键。
要修改表并添加外键,请使用 ALTER。
外键名称应该清晰且易于维护。
使用info_schema库检查外键信息。
要删除级联,请使用 ON DELETE CASCADE。
要删除外键,请使用 ALTER DROP。
外键会影响性能,需要予以考虑。
MySQL外键仅在InnoDB引擎下有效。
你自己掂量一下吧。

在MySQL中如何设置主键和外键

这就是坑。
请不要这样做。

实用说明:使用可视化工具处理外键更加直观。