为什么mysql非唯一约束的字段默认值设置为非NULL—— 不明其理的约定俗成(二)

在数据库设计中,不设置默认值可能导致NULL值问题。查询时需特别处理NULL与空值,更新时NULL不会按预期变化。建议字段设定默认值,避免后续维护困难。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们再创建一个mysql字段时,如果不对这个字段设置默认值,则插入如数据时,未填写此字段内容,其默认值一般都是NULL。
为此我们后期维护会遇到以下问题:(例如 此字段叫 A)

  1. 查询问题:查询是否为空时,int型必须写成 WHERE A=0 OR A IS NULL;字符串型:必须写成 WHERE A="" OR A IS NULL
    是不是感觉很麻烦。但是最麻烦的还是更新。
  2. 更新问题:比如执行 UPDATE 表名 SET A=A+1时,你会发现值为NULL的依旧还是NULL,并没有跟想象中的那样变成1。这就很尴尬了,已经是程序BUG了。你必须 UPDATE 表名 SET A=IF(A IS NULL,1,A+1)

所以我们设计数据库时,做好不要图省事,尽量要有默认值而非用NULL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值