📜  SQL |空值

📅  最后修改于: 2021-09-09 11:44:48             🧑  作者: Mango

SQL 支持称为 NULL 的特殊值,该值用于表示可能未知或不适用于元组的属性值。例如,地址的 Apartment_number 属性仅适用于公寓楼内的地址,不适用于其他类型的住宅。

  • 了解 NULL 值与零值不同很重要。
  • NULL 值用于表示缺失值,但它通常具有以下三种不同解释之一:
    • 值未知(值存在但未知)
    • 值不可用(存在但被故意隐瞒)
    • 属性不适用(此元组未定义)
  • 通常无法确定所要表达的含义。因此,SQL 不区分 NULL 的不同含义。

通常,每个 NULL 值都被认为与数据库中的每个其他 NULL 值不同。当比较操作中涉及 NULL 时,结果被认为是 UNKNOWN。因此,SQL 使用值为True、FalseUnknown 的三值逻辑。因此,当使用逻辑连接词 AND、OR 和 NOT 时,有必要定义三值逻辑表达式的结果。

如何测试 NULL 值?

SQL 允许检查属性值是否为 NULL 的查询。 SQL 不使用 = 或将属性值与 NULL 进行比较,而是使用ISIS 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;
    

    输出: