mysql字段后面的not null 到底要不要写

声明:参考自 为什么mysql字段要设置为not null?

 

写在开头:

经过一段时间的探索(填坑),我发现频繁使用null会导致索引,查询,代码的规范性等方面变得很糟。

我想说的是:

在MYSQL官方有一段对NULL的解释:


“NULL columns require additional space in the row to record whether their values are NULL.

For MyISAM tables, each NULL column takes one bit extra, rounded up to the nearest byte.”


. NULL值是未知的,且占用空间,不走索引

. 空值是不占用空间的

就像我上面提到的这位大佬所说的那样:

打个比方来说,你有一个杯子,空值代表杯子是真空的,NULL代表杯子中装满了空气,虽然杯子看起来都是空的,但是区别是很大的。

我认为,空值(即' ',也就是真空)是不占空间的,而NULL(即“空气”)是占空间的。从常理也是可以说得过去的,“真空”里面放进“空气”也就不是“真空”了。

举个栗子:

test_tmp1

insert null 试验。

试验过程

 

 写在最后:

在平时的书写时,具体写不写not null 应该视情况而定,但我个人建议,应该在create/alter table时把not null 写在字段后面,这样常常可以避免一些不必要的麻烦。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值