在 sql 数据库列中,NULL
除非我们使用NOT NULL
. 使用一种代替另一种有什么好处?谢谢!
5 回答
如果您需要在列中表示未知数据,则将其设为可为空。如果您将始终在列中包含数据,则最好使其不可为空,因为
- 处理空值可能令人讨厌且违反直觉
- 它节省了一点空间
- 在某些数据库系统上,空值没有被索引。
当字段设置为 NOT NULL 时,它不能为空。这意味着您必须在插入记录时为该字段指定一个值。
只是为了澄清您的观点Ö 在任何符合 SQL ANSI 标准的数据库中,都不会将空字符串设置为 NULL。NULL 与空字符串不同。给定显式 NULL 值或没有值的列被分配 NULL。
以下是不使用 NULL 的几个优点。您为用于区分 NULL 值的位节省空间。您还使语句的含义,例如“字段 <> 值”更加清晰。此外,某些数据库在优化诸如“coalesce(field, '') <> value”之类的语句以使用索引时遇到问题。
有时,需要 NULL,尤其是当您插入不完整的记录时。而且,由于默认列允许 NULL,惰性确保几乎所有数据库中的所有列都接受 NULL 值。
NOT NULL
有义务为该字段指定特定值。
NULL
当您需要为该字段保留空值时使用。
NOT NULL
当您想要禁止该字段的空值时使用。大多数数据库使用 -values 缓慢工作的附加目标NULL
。因此,如果您怀疑使用NOT NULL
.
NOT NULL 是一个约束,它确保每一行的列中都有一个值。正确应用时这是一种很好的做法,因为在执行诸如连接之类的操作时必须小心表中的空值,因为没有空值等于任何其他空值