PostgreSQL 约束

PostgreSQL 约束

一、约束的含义

        数据类型是一种限制能够储存在表中数据类别的方法。但是产品的价格的列只能接受正值,但是没有任何一种标准的数据类型只接受正值。或是我们可能需要根据其他列或行来约束一个列中的数据。

二、约束的分类

(一)、检查约束

一个检查约束是最普通的约束类型。它允许我们指定一个特定列中的值必须要满足一个布尔表达式。

1、列约束

一个检查约束有关键字 CHECK 以及其后的包围在圆括号中的表达式组成。检查约束表达式应该涉及到被约束的列,否则该约束也没什么实际意义。

PostgreSQL 约束_第1张图片

我们也可以给与约束一个独立的名称。这会使得错误消息更为清晰,同时也允许我们在需要更改约束时能引用它。语法为:

PostgreSQL 约束_第2张图片

要指定一个命名的约束,请在约束名称标识符前使用关键词 CONSTRAINT ,然后把约束定义放在标识符之后(如果没有以这种方式指定一个约束名称,系统将会为我们选择一个)。

2、表约束

PostgreSQL 约束_第3张图片

列约束可以写成表约束,反过来就不行了!

(二)、非空约束

一个非空约束仅仅指定一个列中不会有空值。

PostgreSQL 约束_第4张图片

(三)、唯一约束

唯一约束保证在一列中或者一组列中保存的数据在表中所有行间是唯一的。

PostgreSQL 约束_第5张图片

(四)、主键

一个主键约束表示可以用作表中行的唯一标识符的一个列或者一组列。这要求那些值都是唯一的并且非空。

两种方法可选其一:

PostgreSQL 约束_第6张图片

        增加一个主键将自动在主键中列出的列或列组上创建一个唯一B-tree索引。并且会强制这些列被标记为 NOT NULL 。
        一个表最多只能有一个主键(可以有任意数量的唯一和非空约束,它们可以达到和主键几乎一样的功能,但只能有一个被标识为主键)。关系数据库理论要求每一个表都要有一个主键。

(五)、外键

一个外键约束指定一列(或一组列)中的值必须匹配出现在另一个表中某些行的值。我们说这维持了两个关联表之间的引用完整性。

PostgreSQL 约束_第7张图片

PostgreSQL 约束_第8张图片

(六)、排他约束

排他约束保证如果将任何两行的指定列或表达式使用指定操作符进行比较,至少其中一个操作符比较将会返回否或空值。

增加一个排他约束将在约束声明所指定的类型上自动创建索引。

你可能感兴趣的:(数据库,PostgreSQL,PostgreSQL)