SQL 如何使用CHECK

SQL 如何使用CHECK

在本文中,您将学习如何在SQL查询中使用CHECK关键字来对列进行约束。

SQL中的CHECK是什么?

CHECK是一种SQL约束,允许数据库用户只输入满足指定条件的值。如果某个列被定义为CHECK约束,则该列只包含TRUE值。

以下语法用于在创建表时向列添加CHECK约束:

CREATE TABLE Table_Name
(
Column_Name_1 DataType (character_size of the column_1) CHECK (Boolean_Expression),
Column_Name_2 DataType (character_size of the column_2) CHECK (Boolean_Expression),
Column_Name_3 DataType (character_size of the column_3) CHECK (Boolean_Expression),
........,
Column_Name_N DataType (character_size of the column_N) CHECK (Boolean_Expression)
)  ;

我们可以轻松地在一个SQL表中的一个或多个列中使用CHECK约束。

当表已经存在时,以下语法将CHECK约束添加到列中:

ALTER TABLE Table_Name ALTER COLUMN Column_Name datatype CHECK;

如果您想在创建表时使用CHECK约束,您需要按照以下步骤进行操作:

  1. 创建新的数据库
  2. 创建带有CHECK约束的新表
  3. 插入值
  4. 查看表的记录

第一步:创建简单的新数据库

首先,您需要在结构化查询语言中创建一个新的数据库。以下查询将在SQL服务器中创建名为“Voting”的新数据库:

CREATE Database Voting;

第二步:创建新表并添加CHECK约束

以下查询创建了 People_Info 表,并将CHECK约束添加到 People_Age 列中:

CREATE TABLE People_Info
(
People_ID INT NOT NULL PRIMARY KEY,  
People_Name VARCHAR (100),  
People_Gender Varchar(20),
People_Age INT NOT NULL CHECK (People_Age >=18),  
People_Address Varchar (80) 
);

第三步:插入值

下面的INSERT查询根据应用于People_Age列的CHECK约束条件,将符合条件的人员记录插入到People_Info表中:

INSERT INTO People_Info (People_ID, People_Name, People_Gender, People_Age, People_Address) VALUES (1001, Arush, Male, 20, Agra);
INSERT INTO People_Info (People_ID, People_Name, People_Gender, People_Age, People_Address) VALUES (1002, Bulbul, Female, 30, Lucknow);
INSERT INTO People_Info (People_ID, People_Name, People_Gender, People_Age, People_Address) VALUES (1004, Saurabh, Male, 20, Lucknow);
INSERT INTO People_Info (People_ID, People_Name, People_Gender, People_Age, People_Address) VALUES (1005, Shivani, Female, 25, Agra );
INSERT INTO People_Info (People_ID, People_Name, People_Gender, People_Age, People_Address) VALUES (1006, Avinash, Male, 22, Delhi);
INSERT INTO People_Info (People_ID, People_Name, People_Gender, People_Age, People_Address) VALUES (1007, Shyam, Male, 19, Banglore);

下面的查询显示了约束失败错误,因为我们已经在People_Age列上应用了约束,这个列只能保存大于18的值。

INSERT INTO People_Info (People_ID, People_Name, People_Gender, People_Age, People_Address) VALUES (1003, Ram, Male, 15, Delhi);

第四步:查看数据表的数据

以下查询显示了People_Info表的数据。

SELECT * FROM People_Info; 
People_ID People_Name People_Gender People_Age People_Address
1001 Arush Male 20 Agra
1002 Bulbul Female 30 Lucknow
1004 Saurabh Male 20 Lucknow
1005 Shivani Female 25 Agra
1006 Avinash Male 22 Delhi
1007 Shyam Male 19 Banglore

如我们在上面的People_Info表中可以看到,People_Age列中包含年龄大于18的人的年龄。

在多列上添加检查约束

以下的CREATE TABLE查询会在Doctor_Info表上指定多列的CHECK约束:

CREATE TABLE Doctor_Info
(
Doctor_ID INT NOT NULL PRIMARY KEY,  
Doctor_Name VARCHAR (100),  
Doctor_Specialist VARCHAR (80) CHECK (Doctor_Specialist = 'Cancer'),  
Doctor_GenderVarchar (20) CHECK (Dcotor_Gender = 'Male'),
Doctor_Country Varchar (80) CHECK (Doctor_Country = 'U. K.')
) ;

以下查询插入了那些是癌症专家、男性且来自英国的多个医生的记录。

INSERT INTO Doctor_Info (Doctor_ID, Doctor_Name, Doctor_Specialist, Doctor_Gender, Doctor_Country) VALUES ( 1035, Jones, Cancer, Male, U. K.),
(1015, Moris, Cancer, Male, U. K.),
(1003, Harry, Cancer, Male, U. K.),
(1044, Bunny, Cancer, Male, U. K.),
(1025, Moria, Cancer, Male, U. K.);

下面的查询显示了Doctor_Info表的详细信息:

SELECT * FROM Doctor_Info;
Doctor_ID Doctor_Name Doctor_Disease Doctor_Gender Doctor_Country
1035 Jones Cancer Male U. K.
1015 Moris Cancer Male U. K.
1003 Harry Cancer Male U. K.
1044 Bunny Cancer Male U. K.
1025 Moria Cancer Male U. K.

添加CHECK约束到现有表

任何数据库用户都可以通过在SQL ALTER查询中使用ADD关键字来轻松地向现有表添加CHECK约束。

指定CHECK约束到现有表的语法:

ALTER TABLE Table_Name ADD CONSTRAINT Constraint_Name CHECK(Boolean_Expression);

以下ALTER语句指定了上述People_Info表中People_Address列的CHECK约束:

ALTER TABLE People_Info ADD CONSTRAINT chk_people_address CHECK(People_Address = 'Lucknow');

从表中删除CHECK约束

使用ALTER语句中的DROP关键字,数据库用户可以删除表的列中的CHECK约束。

如果您想从SQL表中删除CHECK约束,可以使用以下语法进行删除:

ALTER TABLE Table_Name DROP CONSTRAINT Contraint_Name;

以下查询从People_Info表的People_Address列中删除CHECK约束:

ALTER TABLE People_Info DROP CONSTRAINT chk_people_address;

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程