Mysql:允许空含义
为了理解“允许空”意味着什么,您需要了解NULL
是什么,并且明白它与简单的零或空白字符串不同。
NULL
是SQL中的一个特殊值。它表示不存在的数据。这与空白的数据不同。
当你在MySQL中创建一个表,它允许您指定的字段是否允许为NULL
。如果指定“允许空值”,则可以在这些字段中创建包含NULL
值的记录。
在某些情况下,这可能对您有用。例如,“是/否”字段可能是布尔值,但如果用户未指定其偏好,则可能需要设置为NULL
来指示此值,而不是默认为yes或no。
在许多情况下,虽然,允许NULL
可能会有问题。设置为NULL
的字段可能会在查询中产生意外的结果,因为NULL
在所有情况下都不遵循与其他值相同的规则。例如:如果您查询上述示例字段WHERE myfield != 1
,则可能会得到所有不等于1的记录的结果。但不会返回NULL
字段;你需要为他们写一个特例。
NULL
也用作在执行JOIN
查询时的默认值,其中一些结果没有要加入的记录。来自连接表的未知字段将全部设置为NULL
。
一般来说,如果你不知道如何处理“允许空值”呢,最安全的做法是将其设置为不允许空值。
查看Wikipedia entry for NULL in SQL了解更多信息。
希望有所帮助。
允许为空意味着当您更改或插入数据时,您不需要需要来填充该数据。它不是强制性的。
谢谢你的回答! – 2011-04-02 14:24:23
从本质上说,如果允许空值你说有问题的字段可以包含一个合法的值(例如:2011-04-02,如果它是一个日期),以及“NULL”(或“没有价值”)。因此,如果您想象一个字段是强制性的情况,在模式声明中应始终将其标记为NOT NULL
,而可选字段可保留原样。
有关详细信息,请参阅MySQL手册,其(除其他事项外)整齐地总结了东西因此的Working with NULL Values部分:
在概念上,NULL装置“的丢失 未知值”,它是处理 的值与其他 值稍有不同。
谢谢你的好回答和链接。我一定会读它。 – 2011-04-02 14:25:30
谢谢!真的很好解释。 – 2011-04-02 16:29:40
+1很容易理解,谢谢 – 2011-08-30 19:10:17