最近开始给项目设计数据库,遇到一个可能很多人都会遇到的问题,就是设定某一个字段的默认值的时候,是设定null,“”,还是empty string呢?
首先我们从数据类型来分析这个问题:
我是phper,如果从php语言来看,要判断是不是空,用empty()这个函数,那么null和empty string 还有“”,结果都是一样的,但是如果从java,C#这些更高级点的语言来判断,null 和 empty string还是有区别。null在这些高级语言里面就是什么都是空,但是empty string虽然是空,但是是字符串string类型。
然后我们从mysql本身来看:
1:空值('')是不占用空间的
2: 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.”
所以 mysql设计表时 建议不要用default NULL
string类型的可以default ''或者emptystring
int类型的可以default 0
另外一点,从不同的项目开发去分析这个问题:
以前单纯做web网页端,对这个默认值设定问题选用null 还是empty string。但是后来在另外一个团队开发app的时候,这个null和empty string的问题就尤为突出,因为我是用php做接口开发,如果一旦出现null的数据类型,没有处理直接返回去前端,那么无论是ios还是Android端,如果没有处理好这个空的判断,要么就直接输出null,要么程序直接报错。所有建议设计数据库的时候默认值尽量少用null.