人大金仓 金仓数据库KingbaseES约束介绍

金仓数据库KingbaseES约束介绍

关键字:

KingbaseES、约束

1.什么是约束?

数据类型是一种限制能够存储在表中数据类别的方法。但是对于很多应用来说,它们提供的约束太粗糙。例如,一个包含产品价格的列应该只接受正值。但是没有任何一种标准数据类型只接受正值,另一个问题是我们可能需要根据其他列或行来约束一个列中的数据,所以,约束应运而生。

约束是金仓数据库中提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件。如果存在违反约束的数据行为,行为会被约束终止。到目前为止,数据库允许我们在列和表上定义约束。约束让我们能够根据我们的愿望来控制表中的数据。如果一个用户试图在一个列中保存违反一个约束的数据,一个错误会被抛出。即便是这个值来自于默认值定义,这个规则也同样适用。

2.常见约束分类

  • CHECK(检查约束)--用来检查数据表中字段值有效性的一种手段。它允许我们指定一个特定列中的值必须要满足一个布尔表达式。
  • NOT NULL(非空约束)--指字段的值不能为空,对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错。
  • UNIQUE(唯一约束)--是指所有记录中字段的值不能重复出现,保证在一列中或者一组列中保存的数据在表中所有行间的唯一性。
  • PRIMARY KEY(主键约束)--是数据库中使用最频繁的约束,是NOT NULL和UNIQUE的结合,确保某列或多列有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
  • FOREIGN KEY(外键约束)--是表的一个特殊字段,经常与主键约束一起使用,保证一个表中的数据匹配另一个表中的值的参照完整性。

3.实现约束的实例

(1)CHECK(检查约束)

CHECK约束保证列中的所有值满足某一条件,即对输入一条记录要进行检查,如果条件值为false,则记录违反了约束,且不能输入到表。 例如,我们在COMPANY表中定义了SALARY,而SALARY的值要大于0:

CREATE TABLE COMPANY
(
       ID       INT,
       NAME   TEXT,
       AGE     INT,
       SALARY  REAL  CHECK (SALARY>0)
);

约束定义就和默认值定义一样跟在数据类型之后。默认值和约束之间的顺序没有 影响。一个检查约束有关键字CHECK以及其后的包围在圆括号中的表达式组成。检查约束表达式应该涉及到被约束的列,否则该约束也没什么实际意义。

(2)NOT NULL(非空约束)

默认情况下,列可以保存为NULL值,如果用户不想某列有NULL值,那么就可以定义此约束,NULL与没有数据是不一样的,它代表着未知的数据。

依旧是在COMPANY表中,这次定义其中三个ID,NAME,AGE设置不接受空值:

CREATE TABLE COMPANY
(
       ID       INT  NOT NULL,
NAME   TEXT  NOT NULL,
       AGE     INT   NOT NULL,
       SALARY  REAL  CHECK (SALARY>0)
);

对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错。

(3)UNIQUE(唯一约束)

UNIQUE约束可以设置列是唯一的,避免同一列出现重复值。 下面在COMPANY表中,将AGE设置为UNIQUE:


CREATE TABLE COMPANY
(
       ID       INT   NOT NULL,
       NAME   TEXT  NOT NULL,
       AGE     INT   NOT NULL   UNIQUE,
       SALARY  REAL  CHECK (SALARY>0)
);

唯一约束在一个表中可有多个,并且设置唯一约束的列允许有空值,但是只能有一个空值。

(4)PRIMARY KEY(主键约束)

在数据库中,PRIMARY KEY非常重要,是数据表中每一条记录的唯一标识,设置UNIQUE的列可能有多个,但是一张表中只好只有一列设置主键,下面实例将ID作为了主键:


CREATE TABLE COMPANY
(
       ID       INT   PRIMARY KEY,
       NAME   TEXT  NOT NULL,
       AGE     INT   NOT NULL   UNIQUE,
       SALARY  REAL  CHECK (SALARY>0)
);

在设置主键约束时,应注意,一个表中只能定义一个主键,主键值必须唯一标识表中的每一行,且不能为空。

(5)FOREIGN KEY(外键约束)

一个外键约束指定一列(或一组列)中的值必须匹配出现在另一个表中某些行的值。外键用来建立引用表和被引用表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。 下面实例创建了一个COMPANY表:


CREATE TABLE COMPANY
(
       ID       INT   PRIMARY KEY,
       NAME   TEXT  NOT NULL,
       AGE     INT   NOT NULL   UNIQUE,
       SALARY  REAL  CHECK (SALARY>0)
);

下面创建一张DEPARTMENT表,并添加3个字段,EMP_ID就是外键,有:


CREATE TABLE DEPARTMENT
(
       ID       INT       PRIMARY KEY,
       DEPT    CHAR(50)  NOT NULL,
       EMP_ID  INT       REFERENCES COMPANY(ID)
);

现在就不可能创建包含不存在于COMPANY表中的ID值(非空)的订单。

4.总结

在数据库当中,约束的存在保证了数据库的完整性和一致性,检查约束、非空约束、唯一约束、主键约束和外键约束是数据库中最常用的约束类型,在实际应用中,需要根据实际需求综合选用各种约束语句,在表的创建和操作过程中,应当遵守这些约束,以保证数据的准确性和完整性,使得数据操作更加高效、灵活和准确。 更多信息,参见https://help.kingbase.com.cn/v8/index.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值