mysql 为啥我设置一个表的字段not null,为啥还可以插空?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 为啥我设置一个表的字段not null,为啥还可以插空?相关的知识,希望对你有一定的参考价值。

varchar

参考技术A 空格,空字符串("")和null是不同的,请检查插入的内容是不是null本回答被提问者采纳 参考技术B mysql没SQLSERVER那么严格,大部分时候插入空值是不会报错的。 参考技术C varchar类型的字段设置not null后,不能存入null 但是可以存储一个"" 空字符串的 参考技术D 是什么类型的?

MySQL字段的属性应该尽量设置为NOT NULL

数据库建表时,对于一些可填可不填的字段,我们应该尽量把它设置为 NOT NULL。这种做法即可以提高性能,又可以在很大程度上避免空指针类的问题,好处颇多。

1.节省空间

NULL 列需要更多的存储空间:需要一个额外字节作为判断是否为 NULL 的标志位。

2.空指针

查询时,可以在一定程度上减少 NullPointerException。

3.减少因为空值而出现的计算错误

如果有 Null column 存在的情况下,count(NULL column) 需要格外注意,NULL 值不会参与统计。

4.索引

含有空值的列很难进行查询优化,而且对表索引时不会存储 NULL 值的。所以如果索引的字段可以为 NULL值,索引的效率会下降。因为它们使得索引、索引的统计信息以及比较运算更加复杂。

应该用0、一个特殊的值或者一个空串代替 NULL值。

5.使用 != ,NOT IN 的情况

NOT IN 、!= 等负向条件查询在有 NULL 值的情况下,返回永远为空结果,查询容易出错。

 

以上仅是本人最近学习所做的总结和思考,有不对的地方欢迎指正。

以上是关于mysql 为啥我设置一个表的字段not null,为啥还可以插空?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL字段的属性应该尽量设置为NOT NULL

Decimal类型的字段为啥不能为Null

mysql表中,表的外键关联自身主键,为啥插入不了数据?

mysql表中一个表中可以有多个主键吗

postgresql----数据库表的约束----NOT NULL,DEFAULT,CHECK

mysql语句中NOT NULL的意思