2

每当我们在 mysql 数据库中创建表时,就会出现一个空复选框选项。如果单击它,那么它也采用空值,如果它保持未选中状态,那么它也采用空值。那是什么意思?

4

4 回答 4

3

NULL用于表示“无值”,并允许区分 1 和 0、真或假、空字符串与有内容的字符串。它类似于nilRuby、nullJavaScript 或NULLPHP。

如果将列定义为,NOT NULL则不允许在INSERT没有指定该列的值的情况下使用。如果您有,DEFAULT那么这将自动应用。如果您使用 ORM,它可能会为您填写一个安全的、最小的默认值。

列可能NULL需要几乎微不足道的每行额外存储量(一位)来保存NULLorNOT NULL标志。

请记住,NULL在 MySQL 中是不寻常的,因为它不大于、小于或等于任何其他值。这就是逻辑比较的原因IS NULLIS NOT NULL要求。

于 2012-09-07T18:03:10.027 回答
1

该复选框可能会将默认值设置为 null。也可能有一个框指定字段是否接受空值。Null 基本上意味着 Empty 或 Nothing(在 VB 中)。

于 2012-09-07T17:51:15.000 回答
0

Null 基本上是“没有价值”。如果您允许空值,您需要确保您的代码能够处理不包含值的列。另一种方法是为每列定义一个“空”值(例如,0 表示整数)。有时这比处理空值更省力。

正如下面 HLGEM 所指出的:我并不是说 0 等于 null。考虑:带有“StockOnHand”列的数据库。

0 表示您知道手头没有库存。Null 真的意味着未知(你有股票,你可能没有)

根据应用程序,也许您决定将“未知”视为与“无库存”相同 - 在这种情况下,您可以使用“无空值”并且只有一个 0 值。

于 2012-09-07T17:51:48.260 回答
0

根据手册

NULL值表示“没有数据”。NULL可以用任何字母大小写。同义词是\N(区分大小写)。

NOT NULL将意味着相反的NULL,或者不是没有数据。由于某些列可以是NULL,因此您可以使用它WHERE col IS NOT NULL来查找非“空”的值。

于 2012-09-07T18:06:19.713 回答