SQL 中的 CHECK 约束详解 什么是 CHECK 约束?
CHECK 约束是 SQL 中用于确保列中的数据满足特定条件的一种机制。通过 CHECK 约束,可以限制列中的值范围,确保数据的一致性和准确性。
当 CHECK 约束应用于单个列时,它限制该列只能接受特定的值。例如,可以设置一个 CHECK 约束,使得某列的值必须大于零。当 CHECK 约束应用于整个表时,它可以涉及多个列,确保这些列的组合值满足特定的逻辑条件。
在 CREATE TABLE 语句中使用 CHECK 约束
在创建表时,可以直接在 CREATE TABLE 语句中定义 CHECK 约束。以下示例展示了如何在创建 "Persons" 表时为 "Id_P" 列添加 CHECK 约束,以确保 "Id_P" 列的值大于零。
MySQL 示例:
CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CHECK (Id_P > 0) );
SQL Server / Oracle / MS Access 示例:
CREATE TABLE Persons ( Id_P int NOT NULL CHECK (Id_P > 0), LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) );
如果需要命名 CHECK 约束或为多个列定义 CHECK 约束,可以使用以下语法:
通用示例:
CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CONSTRAINT chk_Person CHECK (Id_P > 0 AND City = 'Sandnes') );
在 ALTER TABLE 语句中使用 CHECK 约束
对于已经存在的表,可以使用 ALTER TABLE 语句添加 CHECK 约束。以下示例展示了如何为 "Persons" 表的 "Id_P" 列添加 CHECK 约束。
通用示例:
ALTER TABLE Persons ADD CHECK (Id_P > 0);
如果需要命名 CHECK 约束或为多个列定义 CHECK 约束,可以使用以下语法:
通用示例:
ALTER TABLE Persons ADD CONSTRAINT chk_Person CHECK (Id_P > 0 AND City = 'Sandnes');
删除 CHECK 约束
如果需要删除已存在的 CHECK 约束,可以使用 ALTER TABLE 语句。以下示例展示了如何删除名为 "chk_Person" 的 CHECK 约束。
SQL Server / Oracle / MS Access 示例:
ALTER TABLE Persons DROP CONSTRAINT chk_Person;
什么是 CHECK 约束?
CHECK 约束是 SQL 中用于确保列中的数据满足特定条件的一种机制。通过 CHECK 约束,可以限制列中的值范围,确保数据的一致性和准确性。
当 CHECK 约束应用于单个列时,它限制该列只能接受特定的值。例如,可以设置一个 CHECK 约束,使得某列的值必须大于零。当 CHECK 约束应用于整个表时,它可以涉及多个列,确保这些列的组合值满足特定的逻辑条件。
在 CREATE TABLE 语句中使用 CHECK 约束
在创建表时,可以直接在 CREATE TABLE 语句中定义 CHECK 约束。以下示例展示了如何在创建 "Persons" 表时为 "Id_P" 列添加 CHECK 约束,以确保 "Id_P" 列的值大于零。
MySQL 示例:
CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CHECK (Id_P > 0) );
SQL Server / Oracle / MS Access 示例:
CREATE TABLE Persons ( Id_P int NOT NULL CHECK (Id_P > 0), LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) );
如果需要命名 CHECK 约束或为多个列定义 CHECK 约束,可以使用以下语法:
通用示例:
CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CONSTRAINT chk_Person CHECK (Id_P > 0 AND City = 'Sandnes') );
在 ALTER TABLE 语句中使用 CHECK 约束
对于已经存在的表,可以使用 ALTER TABLE 语句添加 CHECK 约束。以下示例展示了如何为 "Persons" 表的 "Id_P" 列添加 CHECK 约束。
通用示例:
ALTER TABLE Persons ADD CHECK (Id_P > 0);
如果需要命名 CHECK 约束或为多个列定义 CHECK 约束,可以使用以下语法:
通用示例:
ALTER TABLE Persons ADD CONSTRAINT chk_Person CHECK (Id_P > 0 AND City = 'Sandnes');
删除 CHECK 约束
如果需要删除已存在的 CHECK 约束,可以使用 ALTER TABLE 语句。以下示例展示了如何删除名为 "chk_Person" 的 CHECK 约束。
SQL Server / Oracle / MS Access 示例:
ALTER TABLE Persons DROP CONSTRAINT chk_Person;