SQL CHECK 约束详解
CHECK
约束在 SQL 中用于限制列中的数据值,确保它们满足特定的条件。这个约束可以应用于单个列或整个表。对于单个列,CHECK
约束限制列只能包含满足特定条件的值。对于整个表,CHECK
约束可以基于行中其他列的值来限制特定列的值。
特点和使用场景
- 数据验证:
CHECK
约束用于验证数据,确保数据符合业务规则或逻辑。 - 复杂条件:可以定义复杂的条件来限制数据值,例如年龄必须在18到65之间,或者折扣率必须在0到100之间。
- 跨列约束:可以基于多个列的值来定义约束条件。
SQL CHECK 约束语法
在创建表时,可以为特定列或整个表定义 CHECK
约束:
CREATE TABLE table_name
(
column1 data_type CHECK (condition1),
column2 data_type CHECK (condition2),
...
);
或者,为整个表定义一个 CHECK
约束:
CREATE TABLE table_name
(
column1 data_type,
column2 data_type,
...
CHECK (综合条件)
);
table_name
:新表的名称。column1
,column2
:列的名称。data_type
:列的数据类型。CHECK (condition)
:定义约束条件。
代码示例
假设我们正在创建一个名为 Persons
的表,其中包含人的 ID、年龄和职业状态。我们希望确保 P_Id
列只包含大于0的整数,并且年龄在18到100之间。
CREATE TABLE Persons
(
P_Id int CHECK (P_Id > 0),
Age int CHECK (Age BETWEEN 18 AND 100),
Profession varchar(255)
);
在这个例子中:
P_Id
列被定义了一个CHECK
约束,确保P_Id
的值必须大于0。Age
列也被定义了一个CHECK
约束,确保年龄在18到100岁之间。