为什么mysql字段要设置为not null

为什么mysql字段要设置为not null,第1张

not

null

表示这个字段不能为空

虽然看起来他是人为设置的

但是他和业务逻辑或者数据结构有关系

比如你要对这条记录进行读取

而这个是很重要的属性

那么你不仅要让其不为空

还要让他是指定的格式或者数值

还有情况就是

这个字段恰是其他表的主键

那么只有他有值才能正确关联两张表

所以他必须有值

例子1:

字段value2的属性不是NOT NULL

表里保存的数据如下:

例子2:

执行 *** 作:SELECT CONCAT('T','E',1,'test')

结果如下:

执行 *** 作:SELECT CONCAT('T','E',null,'test')

例子3:

执行 *** 作:SELECT COUNT(value2) FROM test

1、空值是不占用空间

2、mysql中的NULL其实是占用空间的,下面是来自于MYSQL官方的解释:

“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。对于MyISAM表,每个空列都多取一位,四舍五入到最近的字节。

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

因为NULL 其实并不是空值,而是要占用空间,所以mysql在进行比较的时候,NULL 会参与字段比较,所以对效率有一部分影响。(待认证)

你好,很高兴回答你的问题。

可以检查一下表中现有的数据中这个字段是不是有为null的。

这样的情况是不能设置为not null的,必须得已有数据符合not null的条件,才可以设置为not null。

如果有帮助到你,请点击采纳。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/bake/11429715.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存