在 建表的时候,通常对于字符串类型的字段,会设置为 not null default null ,但是有时一想,尽然 都 not null 了 为啥还要 default null 不是自相矛盾 多此一举吗?
1.为啥一般我们都会将字段设置为 NOT NULL?
(1) mysql中的NULL其实是占用空间的
(2) 如果一个表字段中含有NULL的数据(NULL表示可以为任何值),那么,SQL Server在做数据库比较操作的时候,会使用三值逻辑(TRUE,FALSE,UNKNOWN),而不是平时的二值逻辑(TRUE,FALSE)。因此,在做数据库设计的时候,我们都要求尽量将表不要设置为NULL类型,如果业务要求需要有空值,我们尽量用实际的默认值来代替NULL(int我们用0,字符串可以是空串等),这样SQL Server在做比较运算就不会使用到相对复杂的三值逻辑,而采用二值逻辑。
NULL , Emptystring,‘’区别
针对 PHP 而言,早语法判断上面 三者并没有太大区别。但是对于其他语言应该是有不同的。null在这些高级语言里面就是什么都是空,但是empty string虽然是空,但是是字符串string类型。
所以 mysql设计表时 建议不要用default NULL
string类型的可以default ''或者emptystring
int类型的可以default 0