MySQL"NULL"问题

9 mysql sql database null

我有一个包含多个列的表.

有时这些列字段中的一些可能是空的(即,在某些情况下我不会使用它们).

我的问题:

  1. 在phpmyadmin中将它们设置为NULL会很聪明吗?

  2. "NULL"属性实际上做了什么?

  3. 通过将它们设置为NULL,我可以获得任何东西吗?

  4. 是否可以以相同的方式使用NULL字段,即使它被设置为null?

Dan*_*llo 14

NULL值的概念是SQL新手的常见混淆源,他们经常认为NULL与空字符串''相同,或者值为零.

不是这种情况.从概念上讲,NULL表示"缺少未知值",并且与其他值的处理方式略有不同.例如,要测试NULL,您不能使用算术比较运算符,例如=,<或<>.

如果您的列可能包含"缺少未知值",则必须将它们设置为接受NULL.

另一方面,具有许多NULL列的表可能指示该表需要被重构为更好地描述它们所代表的实体的较小表.


Sar*_*raz 3

1-在 phpmyadmin 中将它们设置为 NULL 是否明智?

默认情况下,所有字段均为空,除非您为它们指定默认值或为它们插入一些值。不需要这样做...

2 -“NULL”属性实际上有什么作用?

Null意味着您还没有为其分配任何值。

3-通过将它们设置为 NULL 我会得到什么吗?

如前所述,默认情况下所有字段均为空,除非您为它们指定默认值或为它们插入一些值。我不认为你会得到任何收获。

4- 即使将 NULL 字段设置为 null,是否也可以以相同的方式使用 NULL 字段?

您将从具有 NULL 值的字段中获得什么?也不需要这个。

  • 我认为应该禁止盲目投票。总应该有一个解释,以便可以纠正。每个人都应该注意到这样的投票否决。谢谢 (2认同)
  • 如果您在创建表时指定字段为“NOT NULL”,则默认情况下字段不为“NULL”。如果您尚未为此字段分配默认值,并且尝试插入没有该字段值的记录,则会导致错误。 (2认同)
  • @Sarfraz:很公平。但我认为你应该调整你的答案来解决这个问题,只是为了清楚起见。此外,使用支持“NULL”的字段可以获得**很多**,因为它们反映了未知的值。以时间段为例(两个日期时间列“开始”和“结束”)。例如,当 end 为“NULL”时,这可能反映出时间段的开始已知,但结束(仍然)未知。在这种情况下,结束为“0000-00-00 00:00:00”是没有意义的,因为这是对现实的不准确表示。结束不应代表零年中的零时。 (2认同)