当前位置:   article > 正文

PgSQL——学习笔记10:PostgreSQL 约束_pgsql primary key

pgsql primary key

目录

PostgreSQL 约束:用于规定表中的数据规则

NOT NULL 约束

UNIQUE 约束

PRIMARY KEY 约束:主键

FOREIGN KEY 约束:外键

CHECK 约束:保证列中的所有值满足某一条件

EXCLUSION 约束:排他约束

 删除约束


PostgreSQL 约束:用于规定表中的数据规则

PostgreSQL 约束用于规定表中的数据规则。

如果存在违反约束的数据行为,行为会被约束终止。

约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。

约束确保了数据库中数据的准确性和可靠性。

约束可以是列级或表级。列级约束仅适用于列,表级约束被应用到整个表。

以下是在 PostgreSQL 中常用的约束:

  • NOT NULL:指示某列不能存储 NULL 值。
  • UNIQUE:确保某列的值都是唯一的。
  • PRIMARY Key:NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。。
  • FOREIGN Key: 保证一个表中的数据匹配另一个表中的值的参照完整性。
  • CHECK: 保证列中的值符合指定的条件。
  • EXCLUSION :排他约束,保证如果将任何两行的指定列或表达式使用指定操作符进行比较,至少其中一个操作符比较将会返回 false 或空值。

NOT NULL 约束

默认情况下,列可以保存为 NULL 值。

如果您不想某列有 NULL 值,需要在该列上定义此约束,指定在该列上不允许 NULL 值。

NULL 与没有数据是不一样的,它代表着未知的数据。

UNIQUE 约束

UNIQUE 约束可以设置列是唯一的,避免同一列出现重复值。

PRIMARY KEY 约束:主键

在设计数据库时,PRIMARY KEY 非常重要。

PRIMARY KEY 称为主键,是数据表中每一条记录的唯一标识。

设置 UNIQUE 的列可能有多个,但是一张表只有一列可以设置 PRIMARY KEY。

主键是非空约束和唯一约束的组合。

用途:

        可以使用主键来引用表中的行,

        可以通过把主键设置为其他表的外键,来创建表之间的关系。

一个表只能有一个主键,它可以由一个或多个字段组成,

复合键:当多个字段作为主键,它们被称为复合键。

如果一个表的一些字段上定义了一个主键,那么在这些字段上受非空约束和唯一约束。

 实例 

  1. /*下面实例创建了一张新表叫 COMPANY1,
  2. /*添加了 5 个字段,
  3. /*1.NOT NULL约束: 其中三个 ID,NAME,AGE 设置添加NOT NULL约束:不接受空置:
  4. /*2.UNIQUE约束: 其中 AGE 设置为 UNIQUE,因此你不能添加两条有相同年龄的记录:
  5. /*3.PRIMARY KEY约束: 其中 ID 作为主键:*/
  6. CREATE TABLE COMPANY1(
  7. ID INT PRIMARY KEY NOT NULL,
  8. NAME TEXT NOT NULL,
  9. AGE INT NOT NULL UNIQUE,
  10. ADDRESS CHAR(50),
  11. SALARY REAL DEFAULT 50000.00
  12. );

FOREIGN KEY 约束:外键

FOREIGN KEY 即外键约束,指定列(或一组列)中的值必须匹配另一个表的某一行中出现的值。

通常一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一约束的键),即维护了两个相关表之间的引用完整性。

  1. /*下面实例创建一张 DEPARTMENT1 表,并添加 3 个字段,
  2. /*EMP_ID 就是外键,参照 COMPANY1 的 ID:*/
  3. CREATE TABLE DEPARTMENT1(
  4. ID INT PRIMARY KEY NOT NULL,
  5. DEPT CHAR(50) NOT NULL,
  6. EMP_ID INT references COMPANY1(ID)
  7. );

CHECK 约束:保证列中的所有值满足某一条件

CHECK 约束:保证列中的所有值满足某一条件,即对输入一条记录要进行检查。如果条件值为 false,则记录违反了约束,且不能输入到表。

EXCLUSION 约束:排他约束

EXCLUSION 约束:确保如果使用指定的运算符在指定列或表达式上比较任意两行,至少其中一个运算符比较将返回 false 或 null。

  1. /*下面实例创建了一张 COMPANY2 表,添加 5 个字段,
  2. /*1.CHECK 约束:其中为 SALARY 列添加 CHECK,所以工资不能为零:
  3. /*2.EXCLUSION 约束:使用了 EXCLUSION 约束。*/
  4. CREATE TABLE COMPANY2(
  5. ID INT PRIMARY KEY NOT NULL,
  6. NAME TEXT NOT NULL,
  7. AGE INT NOT NULL,
  8. ADDRESS CHAR(50),
  9. SALARY REAL CHECK(SALARY > 0),
  10. EXCLUDE USING gist
  11. (NAME WITH =, -- 如果满足 NAME 相同,AGE 不相同则不允许插入,否则允许插入
  12. AGE WITH <>) -- 其比较的结果是如果整个表边式返回 true,则不允许插入,否则允许
  13. );

这里,USING gist 是用于构建和执行的索引一种类型。

您需要为每个数据库执行一次 CREATE EXTENSION btree_gist 命令,这将安装 btree_gist 扩展,它定义了对纯标量数据类型的 EXCLUDE 约束。

 删除约束

删除约束必须知道约束名称,已经知道名称来删除约束很简单,如果不知道名称,则需要找到系统生成的名称,使用 \d 表名 可以找到这些信息。

  1. /*通用语法如下:*/
  2. ALTER TABLE table_name DROP CONSTRAINT some_name;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/606111
推荐阅读
相关标签
  

闽ICP备14008679号