SQL 支持称为 NULL 的特殊值,该值用于表示可能未知或不适用于元组的属性值。例如,地址的 Apartment_number 属性仅适用于公寓楼内的地址,不适用于其他类型的住宅。
- 了解 NULL 值与零值不同很重要。
- NULL 值用于表示缺失值,但它通常具有以下三种不同解释之一:
- 值未知(值存在但未知)
- 值不可用(存在但被故意隐瞒)
- 属性不适用(此元组未定义)
- 通常无法确定所要表达的含义。因此,SQL 不区分 NULL 的不同含义。
通常,每个 NULL 值都被认为与数据库中的每个其他 NULL 值不同。当比较操作中涉及 NULL 时,结果被认为是 UNKNOWN。因此,SQL 使用值为True、False和Unknown 的三值逻辑。因此,当使用逻辑连接词 AND、OR 和 NOT 时,有必要定义三值逻辑表达式的结果。
如何测试 NULL 值?
SQL 允许检查属性值是否为 NULL 的查询。 SQL 不使用 = 或将属性值与 NULL 进行比较,而是使用IS和IS NOT 。这是因为 SQL 将每个 NULL 值视为与其他所有 NULL 值不同,因此不适合进行相等比较。
例子:
考虑以下员工表,
查询
- 找到没有 Super_ssn 的员工的 Fname、Lname。
SELECT Fname, Lname FROM Employee WHERE Super_ssn IS NULL;
输出:
- 找到拥有 Super_ssn 的 Employee 的数量。
SELECT COUNT(*) AS Count FROM Employee WHERE Super_ssn IS NOT NULL;
输出: