问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

为什么建议 MySQL 数据库字段一定要设置 NOT NULL

创作时间:
作者:
@小白创作中心

为什么建议 MySQL 数据库字段一定要设置 NOT NULL

引用
CSDN
1.
https://blog.csdn.net/linyichao1314/article/details/137569898

在数据库设计中,是否应该为字段设置NOT NULL约束一直是一个值得探讨的话题。本文将从多个角度分析使用NOT NULL的重要性和必要性,并给出具体的使用建议。

为什么建议使用NOT NULL

在实际开发中,对是否使用NOT NULL约束,很多人并没有一个明确的标准。要知道某个字段需不需要添加NOT NULL,首先,要知道NULL和NOT NULL之间的区别,这样你才能更好地玩转NOT NULL,也避免了在项目中可能遇到的一些坑。

一、语义不清晰

NULL和NOT NULL使用空值代表的含义是不一样的。NULL我们可以认为这一列的值是未知的,空值则可以认为我们知道这个值,只不过它是空的而已。比如一张表的name字段是NULL,我们可以认为不知道名字是什么,反之如果是空字符串我们知道没有名字,它就是一个空值。

二、聚合函数计算不准确

对于NULL值的列,使用聚合函数的时候会忽略NULL值。比如表里面有两条数据,其中一条数据的name字段值为NULL,如果对name进行count,表示对非NULL列进行统计,所以查出来的结果为1,这显然是不符合我们的预期的。但是,在实际开发中一般都是对id字段进行统计数量。

三、导致等号表达式失效

比如表的name字段是NULL,如果使用等号查询,是查不到的,必须使用is NULL才能查询出来。

四、导致值运算失效

比如表的age字段值是NULL,加1之后结果还是NULL,name字段值是NULL,concat之后结果也变成了NULL,这也是不符合我们预期的。

五、一些意想不到的问题

比如表里面只有一条name为高启强的数据,但是查询不等于高启强的数据时,显示只有一条,这显然不符合我们的预期。

是否应该使用NOT NULL

个人开发建议,大多数字段应该设置NOT NULL,配合默认值default使用更好。比如:

  • 用户状态字段status,只有两个值0禁用1正常。应该设置NOT NULL并设置默认值为1。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号