📜  SQL 空值

📅  最后修改于: 2022-05-13 01:57:03.256000             🧑  作者: Mango

SQL 空值

在 SQL 中,表中可能有一些记录没有每个字段的值或数据。这是可能的,因为在数据输入时信息不可用。因此 SQL 支持一个称为 NULL 的特殊值,用于表示可能未知或不适用于元组的属性值。如果没有用户定义的值,SQL 会在字段中放置一个 NULL 值。例如,地址的 Apartment_number 属性仅适用于公寓楼中的地址,而不适用于其他类型的住宅。

NULL 值的重要性:

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

NULL值的原理:

  • 当实际值未知或值没有意义时,设置 NULL 值是合适的。
  • 如果数据类型是数字,则 NULL 值不等于值 ZERO;如果数据类型是字符,则 NULL 值不等于空格。
  • NULL 值可以插入到任何数据类型的列中。
  • NULL 值将在任何表达式中计算 NULL。
  • 假设如果任何列具有 NULL 值,则 UNIQUE、FOREIGN 键、CHECK 约束将被 SQL 忽略。

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

如何测试 NULL 值?

SQL 允许检查属性值是否为 NULL 的查询。 SQL 使用ISIS NOT ,而不是使用 = 或将属性值与 NULL 进行比较。这是因为 SQL 认为每个 NULL 值都与其他所有 NULL 值不同,因此不适合进行相等比较。

现在,考虑以下员工表,

假设如果我们找到没有 Super_ssn 的 Employee 的 Fname、Lname,那么查询将是:

询问

SELECT Fname, Lname FROM Employee WHERE Super_ssn IS NULL;

输出:

现在,如果我们找到拥有 Super_ssn 的员工数量的计数。

询问:

SELECT COUNT(*) AS Count FROM Employee WHERE Super_ssn IS NOT NULL;

输出: