gpt4 book ai didi

database-design - 什么是数据库 NULL 字段?

转载 作者:行者123 更新时间:2023-12-03 18:24:34 26 4
gpt4 key购买 nike

谁能解释一下NULL的用法在数据库表中?它有什么用途以及它有什么用处?

最佳答案

标记“未知”或缺失值很有用。

例如,如果您正在存储人员,并且其中一个字段是他们的生日,您可以允许它是 NULL表示“我们不知道他何时出生”。

这与具有不可为空的字段相反,对于相同类型的含义,您需要指定具有相同含义的“魔法值”。

例如,您应该在生日字段中存储什么日期以表示“我们不知道他何时出生”? 1970-01-01 应该是那个魔法值吗?如果我们突然需要存储一个当天出生的人怎么办?

现在,话虽如此,NULL是数据库设计和引擎中最难处理的问题之一,因为它是值的传播属性。

例如,下面的结果是什么:

SELECT *
FROM people
WHERE birthday > #2000-01-01#

SELECT *
FROM people
WHERE NOT (birthday > #2000-01-01#)

(注意,上面的日期语法在任何数据库引擎中可能都不合法,不要挂断它)

如果您有很多人的生日“未知”,即。 NULL ,它们不会出现在任何一个结果中。

因为在上面的两个查询中,第一个是“所有符合条件 X 的人”,第二个是“所有没有条件 X 的人”,你会认为这两个查询的结果加在一起会产生所有的人数据库。

然而,查询实际上是“所有具有已知和明确标准 X 的人”。

这类似于问某人“我是否已超过 40 岁?”对方说“我不知道”。如果你接着问“我比 41 岁还年轻吗?”,答案是一样的,他仍然不知道。

此外,任何数学或比较都会产生 NULL以及。

例如,什么是:
SELECT 10 + NULL AS X

结果是 NULL因为“10+未知”还是未知数。

关于database-design - 什么是数据库 NULL 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2165886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com