SQL中CHECK约束用于保证列中的值符合指定的条件

下面是关于创建和修改表时使用CHECK约束的介绍和示例。

1. 创建表时的SQL CHECK约束:
   - 在"Persons"表的"P_Id"列上创建CHECK约束。CHECK约束规定"P_Id"列必须只包含大于0的整数。

   CREATE TABLE Persons
   (
     P_Id int NOT NULL CHECK (P_Id > 0),
     LastName varchar(255) NOT NULL,
     FirstName varchar(255),
     Address varchar(255),
     City varchar(255)
   );


   - 命名CHECK约束,并定义多个列的CHECK约束。

   CREATE TABLE Persons
   (
     P_Id int NOT NULL,
     LastName varchar(255) NOT NULL,
     FirstName varchar(255),
     Address varchar(255),
     City varchar(255),
     CONSTRAINT chk_Person CHECK (P_Id > 0 AND City = 'Sandnes')
   );

2. 修改表时的SQL CHECK约束:
   - 当表已被创建时,在"P_Id"列创建CHECK约束。

   ALTER TABLE Persons
   ADD CHECK (P_Id > 0);


   - 命名CHECK约束,并定义多个列的CHECK约束。

   ALTER TABLE Persons
   ADD CONSTRAINT chk_Person CHECK (P_Id > 0 AND City = 'Sandnes');

3. 撤销CHECK约束:

   ALTER TABLE Persons
   DROP CONSTRAINT chk_Person;

通过使用CHECK约束,我们可以限制列中的值必须符合指定的条件。这样可以确保数据的一致性和有效性。CHECK约束可以应用于单个列,也可以基于行中其他列的值对特定列的值进行限制。

需要注意的是,CHECK约束在某些数据库管理系统中的实现可能有所不同,具体的语法和支持的条件表达式可能会有所差异。

举例

假设我们有一个名为"Products"的表,其中包含以下列:

- ProductId (int):产品ID
- ProductName (varchar):产品名称
- Price (decimal):产品价格

我们可以使用CHECK约束来限制Price列的取值范围,例如要求价格必须大于0且小于等于1000。以下是一个示例:

CREATE TABLE Products
(
  ProductId int PRIMARY KEY,
  ProductName varchar(255) NOT NULL,
  Price decimal(10, 2) CHECK (Price > 0 AND Price <= 1000)
);

上述示例中,通过在Price列上定义CHECK约束 `(Price > 0 AND Price <= 1000)`,我们限制了价格必须大于0且小于等于1000。这意味着在插入或更新数据时,如果Price列的值不符合该条件,数据库管理系统将拒绝操作。

例如,我们尝试插入一条价格为2000的记录:

INSERT INTO Products (ProductId, ProductName, Price)
VALUES (1, 'Product A', 2000);

由于价格超出了CHECK约束定义的范围,这个插入操作将被拒绝,并引发约束违规错误。

另外,我们还可以在ALTER TABLE语句中添加或修改CHECK约束。例如,我们可以使用以下语句将Price列的CHECK约束更改为价格必须大于0且小于等于500:

ALTER TABLE Products
ADD CHECK (Price > 0 AND Price <= 500);

这样,现有数据中的价格将被验证,并确保符合新的CHECK约束条件。

通过使用CHECK约束,我们可以确保表中的列值符合指定的条件,从而保证数据的一致性和有效性。

总结:
CHECK约束用于限制列中的值必须符合指定的条件。可以在创建表时或修改表时定义CHECK约束。通过定义CHECK约束,我们可以确保数据的一致性和有效性。如果数据不满足CHECK约束定义的条件,则数据库管理系统将不允许插入或更新相应的数据。撤销CHECK约束可以通过ALTER TABLE语句来实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值