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

1. 前言

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

这句建议你可能听好多人讲过,但是有没有仔细想过为什么别人这么说 ?

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

2. 使用 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 为 高启强 的数据,但是查询不等于 高启强 的数据时,显示只有一条,这显然不符合我们的预期

3. 到底要不要使用 not null

个人开发建议,大多数字段应该设置 not null,配合默认值 default 使用更好

比如:

用户状态字段 status,只有两个值 0 禁用 1 正常。应该设置 not null 并设置默认值为 1

最近更新

  1. TCP协议是安全的吗?

    2024-04-10 05:36:03       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-10 05:36:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-10 05:36:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-10 05:36:03       20 阅读

热门阅读

  1. jenkins部署项目报错:certificate has expired

    2024-04-10 05:36:03       14 阅读
  2. Git同时拉取和推送多个分支

    2024-04-10 05:36:03       15 阅读
  3. 10个全面了解python自动化办公代码

    2024-04-10 05:36:03       14 阅读
  4. [蓝桥杯 2013 省 B] 翻硬币

    2024-04-10 05:36:03       10 阅读
  5. 富格林:堤防交易陷阱安全做单交易

    2024-04-10 05:36:03       14 阅读
  6. 边缘设备上的chatGPT

    2024-04-10 05:36:03       10 阅读
  7. Redis 常用命令以及结构

    2024-04-10 05:36:03       12 阅读
  8. Android Binder——Kernel层介绍(七)

    2024-04-10 05:36:03       9 阅读
  9. 【Unity优化】模型

    2024-04-10 05:36:03       11 阅读
  10. 掌握ChatGPT:打造高质量学术论文

    2024-04-10 05:36:03       11 阅读
  11. 2024【华南理工大学综合评价招生】解读

    2024-04-10 05:36:03       9 阅读
  12. c语言:模拟字符串拷贝功能(strcpy),面试题

    2024-04-10 05:36:03       14 阅读