Sql简介 专题
专题目录
您的位置:database > Sql简介专题 > SQL检查约束
SQL检查约束
作者:--    发布时间:2019-11-20

在本教程中,将学习如何使用sql check约束来验证基于布尔表达式的列或一组列中的数据。

1. sql check约束简介

check约束是sql中的完整性约束,它允许指定列或列集中的值必须满足布尔表达式。

可以在单个列或整个表上定义check约束。 如果在单个列上定义check约束,则check约束仅检查此列的值。 但是,如果在表上定义check约束,则会根据同一行的其他列中的值限制列中的值。

check约束由关键字check后跟括号中的布尔表达式组成:

check(boolean_expression)

如果要为check约束指定名称,请使用以下语法:

constraint constraint_name check(boolean_expression)

值得注意的是,当布尔表达式返回truenull值时,视为满足check约束。 如果其中一个操作数为null,则布尔表达式求值为null,它们不会阻止约束列存储null值。 若要确保该列不包含null值,请使用not null约束。

2. sql check约束示例

下面来看一些创建check约束的例子。

要创建一个products表,其products_price列中的值必须为正数,请使用以下create table语句:

create table products (
    product_id int primary key,
    product_name varchar(255) not null,
    selling_price numeric(10,2) check (selling_price > 0)
);

check约束位于列的数据类型之后。 如果使用负值插入或更新售价,则表达sell_price> = 0将返回false,并且rdmbs将返回错误。

可以为check约束指定单独的名称。 约束名称可帮助明确rdbms返回的错误消息,并确切地知道该值违反了哪个约束。

要为约束指定名称,请使用constraint关键字,后跟约束的名称。

例如,以下语句将positive_selling_price指定为sell_price列上的check约束的名称。

分配check约束名称的语法如下:

create table products (
    product_id int primary key,
    product_name varchar(255) not null,
    selling_price numeric(10,2) constraint positive_selling_price check (selling_price > 0)
);

可以定义引用多个列的check约束。假设在product表中存储了销售价格和成本,并且希望确保成本始终低于销售价格。

create table products (
    product_id int primary key,
    product_name varchar (255) not null,
    selling_price numeric (10, 2) check (selling_price > 0),
    cost numeric (10, 2) check (cost > 0),
    check (selling_price > cost)
);

首先,有两个与sell_pricecost列相关联的check约束,以确保每列中的值为正。
其次,有另一个未附加到任何列的check约束,而是显示为create table语句中的最后一个子句。

前两个约束是列约束,而第三个约束是表约束。 表约束不与任何列关联。使用以下语法为表约束指定名称。

create table table_name (
   …,
   constraint check_constraint_name check (boolean_expression)
);

例如,以下语句为上面的check约束指定了一个名称。

create table products (
    product_id int primary key,
    product_name varchar (255) not null,
    selling_price numeric (10, 2) check (selling_price > 0),
    cost numeric (10, 2) check (cost > 0),
    constraint valid_selling_price  check (selling_price > cost)
);

在本教程中,我们介绍了check约束的一些概念,并演示如何使用check约束来基于布尔表达式验证数据。


网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册