每当我们在 mysql 数据库中创建表时,就会出现一个空复选框选项。如果单击它,那么它也采用空值,如果它保持未选中状态,那么它也采用空值。那是什么意思?
4 回答
NULL
用于表示“无值”,并允许区分 1 和 0、真或假、空字符串与有内容的字符串。它类似于nil
Ruby、null
JavaScript 或NULL
PHP。
如果将列定义为,NOT NULL
则不允许在INSERT
没有指定该列的值的情况下使用。如果您有,DEFAULT
那么这将自动应用。如果您使用 ORM,它可能会为您填写一个安全的、最小的默认值。
列可能NULL
需要几乎微不足道的每行额外存储量(一位)来保存NULL
orNOT NULL
标志。
请记住,NULL
在 MySQL 中是不寻常的,因为它不大于、小于或等于任何其他值。这就是逻辑比较的原因IS NULL
和IS NOT NULL
要求。
该复选框可能会将默认值设置为 null。也可能有一个框指定字段是否接受空值。Null 基本上意味着 Empty 或 Nothing(在 VB 中)。
Null 基本上是“没有价值”。如果您允许空值,您需要确保您的代码能够处理不包含值的列。另一种方法是为每列定义一个“空”值(例如,0 表示整数)。有时这比处理空值更省力。
正如下面 HLGEM 所指出的:我并不是说 0 等于 null。考虑:带有“StockOnHand”列的数据库。
0 表示您知道手头没有库存。Null 真的意味着未知(你有股票,你可能没有)
根据应用程序,也许您决定将“未知”视为与“无库存”相同 - 在这种情况下,您可以使用“无空值”并且只有一个 0 值。
根据手册:
该
NULL
值表示“没有数据”。NULL
可以用任何字母大小写。同义词是\N
(区分大小写)。
NOT NULL
将意味着相反的NULL
,或者不是没有数据。由于某些列可以是NULL
,因此您可以使用它WHERE col IS NOT NULL
来查找非“空”的值。