📜  SQL |检查约束(1)

📅  最后修改于: 2023-12-03 15:05:18.240000             🧑  作者: Mango

SQL | 检查约束

在 SQL 中,检查约束(Check Constraint)用于强制数据列中的值符合指定的条件。它可以被用于单个数据列,也可以被用于整个表。

检查约束可以指定在插入或更新行时,检查某些条件是否满足,如果条件不满足,不允许插入或更新该行。这样可以在数据存入数据库前就过滤掉一些非法数据,保持数据的完整性和正确性。

1. 创建检查约束

创建检查约束可以使用 ALTER TABLE 命令,它的语法如下:

ALTER TABLE table_name
ADD CHECK (condition);

这个命令会在表 table_name 上添加一个检查约束,它会检查 condition 是否为真。

例如,我们创建一个名为 person 的表,并添加一条检查约束来限制 age 字段必须大于 0。

CREATE TABLE person (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    age INT
);

ALTER TABLE person
ADD CHECK (age > 0);
2. 修改检查约束

如果我们想要修改检查约束,可以使用 ALTER TABLE 命令并指定要修改的约束的名称,然后重新指定新的条件。

ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

ALTER TABLE table_name
ADD CHECK (condition);

先使用 DROP CONSTRAINT 命令删除旧的约束,然后再使用 ADD CHECK 命令来添加更新后的约束。

例如,我们想要将上面的约束的条件修改为 age > 18

ALTER TABLE person
DROP CONSTRAINT person_age_check;

ALTER TABLE person
ADD CHECK (age > 18);
3. 删除检查约束

如果我们想要删除检查约束,可以使用 ALTER TABLE 命令并指定要删除的约束的名称。

ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

例如,我们想要删除上面的约束。

ALTER TABLE person
DROP CONSTRAINT person_age_check;
4. 示例

最后,我们来看一个更完整的示例,我们有一个名为 student 的表,它有四个字段:idnameagegrade

我们想要添加三条检查约束:

  1. age 必须大于 0;
  2. grade 必须在 0 和 100 之间;
  3. 如果年龄小于 18 岁,则成绩必须小于 60。
CREATE TABLE student (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    age INT,
    grade INT
);

ALTER TABLE student
ADD CHECK (age > 0);

ALTER TABLE student
ADD CHECK (grade >= 0 AND grade <= 100);

ALTER TABLE student
ADD CHECK (age >= 18 OR grade < 60);

以上就是关于 SQL 检查约束的介绍。使用检查约束可以有效地保证数据的完整性和正确性,避免了非法数据进入数据库。