Mysql中NULL和空字符串有什么区别?
需要多少存储空间?
例如。
在用户表
中name:NULL - 占用多少空间
电话: - 它占用多少空间
答案 0 :(得分:20)
考虑NULL的最佳方法是它有毒。
使用NULL完成的任何操作都将产生NULL。
NULL +任何数字类型为null。 NULL concat任何字符串都为null。
空字符串是长度为0的字符串。
示例:
mysql> select concat('hello world', null);
+-----------------------------+
| concat('hello world', null) |
+-----------------------------+
| NULL |
+-----------------------------+
mysql> select concat('hello world', '');
+---------------------------+
| concat('hello world', '') |
+---------------------------+
| hello world |
+---------------------------+
至于空间节省,它取决于列定义的数据类型。
答案 1 :(得分:5)
存储空间不应该与此有关。相反,你应该关注NULL的语义。假设我家里有一块你生前从未见过的玻璃杯。如果我问你玻璃杯里有多少水,你就无法给出有效答案。事实是你不知道。现在,如果我拿到玻璃杯并告诉你里面没有水,那么你给我的答案就是“没有”。 NULL是“我不知道答案”,空字符串是“我知道,答案是空字符串”。
答案 2 :(得分:4)
使用NULL有正当理由,但在行存储中节省空间不是一个。如果你想要'不知道'占位符使用NULL;如果您只想存储一个行为空字符串的空字符串,请继续并存储空字符串。如果它是一个VARCHAR列(它可能会是这样),那么它几乎没有占用太多空间。