关键字:
检查约束、非空约束、唯一约束、主键约束、外键约束、人大金仓、KingbaseES、
1. 约束的概念
数据库中的约束适用于定义和维护数据完整性规则的。以确保数据的准确性、一致性和有效性。约束可以应用于表的列或者表之间的关系,以强制数据库中存储的数据满足特定的条件。
通俗的解释就是按照表中的数据规则,如果存在违反约束的数据行为,那么这个行为就会被阻止。一般在创建表之后就会创建相关列的约束,或者是在编写sql脚本时就定义好约束。比如说常见的check约束:age>8 and age<33。常见的约束种类包括五种,检查约束、非空约束、唯一约束、主键约束、外键约束
2. 约束的使用
(1)检查约束
就是通过逻辑表达式来判断插入的数据是否符合这个表达式,不符合直接插入失败。
create table orders(order_id number,total number check(total >=0));
insert into orders values (1,-1);
此时会提示违反约束,因为-1不符合total列定义的大于等于0的约束
如果换一个大于0的值就可以成功
(2)非空约束
非空约束的意思就是插入的值的列不能使空值,否则会报错
create table products(id number primary key,name varchar(20),price number not null);
上述语句对price字段设置非空约束,如果在插入的时候,price为空值,那就会提示违反约束
此时如果对第二列插入空值,就可以正常插入。
insert into products (id,price) values (2,20);
(3)唯一约束
唯一约束的意思就是插入的值的列中所有的这个列存在的值必须要是唯一的,不能出现相同的值,否则违反了唯一约束。
create table employees(id number,email varchar(50) unique);
此时第二列为唯一约束,那么如果第二列的数值重复的话,就会插入失败,其他的列则不会
(4)主键约束
主键约束其实是相当于非空约束加上唯一性约束这两种约束的结合体,同时拥有这两种效力。
create table students(id number primary key,fir varchar(20),las varchar(20));
这里展示了其中的唯一约束
此时违反了其中的非空约束。
(5)外键约束
一个外键约束指定一列(或一组列)中的值必须匹配出现在另一个表中某些行的值。就是说这两个表中必须要存在联系。
create table customers( id number primary key,name varchar(20));
create table orderss(id number primary key,customer_id number,order_date date,foreign key(customer_id)references customers(id));
此时orderss表中的customer_id是customers表中的id列
这个时候如果直接对orderss表中进行值的插入,因为customers表中没有数据,所以orderss表中的customer_id列和customers表中的id列值不对应,所以会报外键约束的错误。
insert into orderss (id,customer_id,order_date)values (1,100,'2020-12-20');
参考资料
《KingbaseES SQL语言参考手册》




