"Allow Null"
是什么意思,它有什么作用?
答案 0 :(得分:32)
为了理解“允许空”的含义,您需要了解NULL
是什么,并了解它与零或空字符串不同。
NULL
是SQL中的特殊值。它表示不存在的数据。这与空白的数据不同。
在MySQL中创建表格时,您可以指定是否允许您的字段为NULL
。如果指定“允许空”,则可以在这些字段中创建具有NULL
值的记录。
在某些情况下,这可能对您有用。例如,“是/否”字段可能是布尔值,但如果用户未指定其首选项,您可能需要设置为NULL
来表示此而不是默认为是或否。
但在许多情况下,允许NULL
可能会有问题。设置为NULL
的字段可能会在查询中产生意外结果,因为NULL
在所有情况下都不遵循与其他值相同的规则。例如:如果您查询上面的示例字段WHERE myfield != 1
,您可能希望得到所有不等于1的记录的结果。但是不会返回NULL
个字段。你需要为他们写一个特例。
NULL
查询时, JOIN
也会用作默认值,其中某些结果没有要加入的记录。联接表中的未知字段都将设置为NULL
。
一般情况下,如果您不确定如何处理“Allow Null”,最安全的选择是将其设置为no allow nulls。
有关详细信息,请参阅Wikipedia entry for NULL in SQL。
希望有所帮助。
答案 1 :(得分:4)
允许Null意味着当您更改或插入数据时,您不需要来填充该数据。这不是强制性的。
答案 2 :(得分:4)
本质上,如果您允许空值,则表示相关字段可以包含合法值(例如:2011-04-02,如果它是日期)以及“NULL”(或“否”值“)。
因此,如果您想象一个字段是必填字段的情况,它应该始终在架构声明中表示为NOT NULL
,而可选字段可以保留原样。
有关更多信息,请查看MySQL手册的Working with NULL Values部分,其中(除其他外)整齐地总结了这些内容:
从概念上讲,NULL表示“缺少 未知的价值“并且它被处理 与其他人有所不同 值。