MySQL约束constraint

主键确保行是唯一的并且整列不能为空。
不用担心主键自动递增,默认会递增。
如果不为空则不能留空。
唯一的问题是不能有任何复制。
外键确保表相互链接。
只需创建表并直接添加约束即可。
要更改表,请使用 ALTER。
默认值为填空值。
零填充是用前导零进行填充。

深入浅出MySQL中的NN约束mysql中nn

那天我在一家咖啡厅,坐在我旁边的那个人在电脑屏幕上挠头,不断地调试数据库插入,最后发现他忘记给必填字段赋值。
他挠了挠头,道:“早知道这个框不能留空,我就不会跳过了。

神经网络约束就像生活中的门禁卡。
进入社区必须刷卡,并且必须填写数据库表中的某些字段才能存储数据。
例如,在2 02 3 年5 月的项目中,我们将这个约束添加到users表的name字段中。
结果后来有一个实习生尝试插入一个空值直接报错,这样在下次验证的时候其实省了很多麻烦。

但必须要说的是,有时空值也能在紧急情况下挽救局面。
我记得在测试过程中,我故意将年龄字段留空,看看系统会如何反应。
事实证明,程序仍然可以使用默认值运行,这提醒我们仅依靠 NN 约束是不够的。
我们还要配合一些默认值或者业务逻辑。

等等,还有一件事。
在旧版本的MySQL中,这个约束的激活时间看起来有点奇怪,有时需要在触发器中进行额外的处理。
但是现在5 .7 以上版本需要优化了吧?我得找时间再查一下说明书确认一下。

给MySQL表添加和删除唯一约束的方法

嗯,昨晚调试代码时发现了一些奇怪的东西。
user表突然报错,说邮箱地址重复了。
检查了半天,发现是新添加的唯一约束没有生效。
当时数据库是凌晨三点,服务器在杭州。
我记得使用用户 ALTER TABLE ADD CONSTRAINT uc_email UNIQUE(email);语句,但结果仍然是键“uc_email”的重复条目“example.com”。
等等,你是不是忘了 COMMIT?当时我急于赶进度,所以不管事务,一直复制粘贴SQL。
我检查了日志,发现确实没有提交。
这提醒我,有时看似简单的约束添加,却隐藏在细节中的陷阱。