SQL 教程 目录

SQL CHECK 约束

概述

SQL 的 CHECK 约束是一种用于限制列中数据的合法值的方法。它允许你在数据库表中指定一个条件,只有满足该条件的数据才能被插入或更新到表中。CHECK 约束通常用于确保数据的有效性,防止非法数据输入。

创建带有 CHECK 约束的表

你可以通过在创建表时定义 CHECK 约束来确保数据的合法性。以下是一个简单的例子:

在这个例子中,我们创建了一个名为 Employees 的表,并为 Age 列添加了一个 CHECK 约束,确保年龄在 18 到 65 岁之间。

在已有表中添加 CHECK 约束

如果你已经有一个表,并且想要为其添加 CHECK 约束,可以使用 ALTER TABLE 语句。例如:

这里我们给 Employees 表添加了一个名为 CHK_EmployeeAgeCHECK 约束。

多个 CHECK 约束

你也可以为同一列设置多个 CHECK 约束,或者为不同的列设置不同的约束。下面的例子展示了如何为 SalaryAge 两列分别添加 CHECK 约束:

-- -------------------- ---- -------
------ ----- --------- -
    ---------- --- ------- ----
    --------- -------------
    -------- -------------
    --- ----
    ------ ----------- ---
    ----- ---- -- -- --- --- -- ----
    ----- ------- - --
--

或者,你也可以为每个约束命名,然后通过名称来引用它们:

CHECK 约束的表达式

CHECK 约束中的表达式可以是任何有效的 SQL 表达式,包括逻辑运算符(如 AND、OR)、比较运算符(如 <、>、=)以及函数调用等。例如,你可以使用函数来检查日期范围:

在这个例子中,我们确保了 DeliveryDate 总是在 OrderDate 之后。

使用子查询的 CHECK 约束

虽然不常见,但理论上你可以在 CHECK 约束中使用子查询。然而,这可能会导致性能问题,并且不是所有数据库系统都支持这种方式。一个可能的例子如下:

请注意,上述示例可能无法在所有数据库系统中运行,因为它依赖于表中的当前数据来计算平均价格,而 CHECK 约束通常只在插入或更新操作时执行。

结论

CHECK 约束是数据库设计中非常有用的一种工具,可以帮助你确保数据的一致性和完整性。通过合理地应用 CHECK 约束,可以有效地防止无效数据的输入,从而提高应用程序的健壮性和可靠性。在实际项目中,根据业务需求灵活运用各种约束机制,将使你的数据库更加安全和高效。

上一篇: SQL DEFAULT 约束
下一篇: SQL JOIN 复杂连接
纠错
反馈