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