#### 3.3.4.6 使用 NULL 值

[](<>)[](<>)

这`空值`在您习惯之前，价值可能会令人惊讶。从概念上讲，`空值`表示“缺失的未知值”，它的处理方式与其他值有所不同。

测试`空值`， 使用[`一片空白`](comparison-operators.html#operator_is-null)和[`不为空`](comparison-operators.html#operator_is-not-null)运算符，如下所示：

```
mysql> SELECT 1 IS NULL, 1 IS NOT NULL;
+-----------+---------------+
| 1 IS NULL | 1 IS NOT NULL |
+-----------+---------------+
|         0 |             1 |
+-----------+---------------+
```

您不能使用算术比较运算符，例如[`=`](comparison-operators.html#operator_equal),[`<`](comparison-operators.html#operator_less-than)， 要么[`<>`](comparison-operators.html#operator_not-equal)测试`空值`.为了自己演示这一点，请尝试以下查询：

```
mysql> SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1 > NULL;
+----------+-----------+----------+----------+
| 1 = NULL | 1 <> NULL | 1 < NULL | 1 > NULL |
+----------+-----------+----------+----------+
|     NULL |      NULL |     NULL |     NULL |
+----------+-----------+----------+----------+
```

因为任何算术比较的结果`空值`也是`空值`，您无法从此类比较中获得任何有意义的结果。

在 MySQL 中，`0`要么`空值`意味着假，其他任何东西都意味着真。布尔运算的默认真值是`1`.

这种特殊待遇`空值`这就是为什么在上一节中，有必要确定哪些动物不再活着`死亡不为空`代替`死亡 <> NULL`.

二`空值`值被认为是相等的`通过...分组`.

当做一个`订购方式`,`无效的`如果您这样做，则首先显示值`订购人。。。ASC`最后，如果你这么做了`订购人。。。描述`.

使用时的常见错误`无效的`假设不可能在定义为的列中插入零或空字符串`非空`，但事实并非如此。这些实际上是价值观`无效的`意思是“没有价值”通过使用`是[不是]空的`如图所示：

```
mysql> SELECT 0 IS NULL, 0 IS NOT NULL, '' IS NULL, '' IS NOT NULL;
+-----------+---------------+------------+----------------+
| 0 IS NULL | 0 IS NOT NULL | '' IS NULL | '' IS NOT NULL |
+-----------+---------------+------------+----------------+
|         0 |             1 |          0 |              1 |
+-----------+---------------+------------+----------------+
```

因此，完全可以将零或空字符串插入`非空`列，实际上就是这样`非空`看见[第B.3.4.3节，“空值问题”](problems-with-null.html).
