PostgreSQL 约束学习笔记

在 PostgreSQL 中,约束(Constraint)是一种强制性规则,用于确保表中的数据符合特定的条件。本文将介绍 PostgreSQL 中的常见约束类型,并给出相应的实例。

1. NOT NULL 约束

NOT NULL 约束用于确保指定列中的值不为空。如果试图向该列中插入空值,则会引发错误。

sqlCopy Code
-- 创建一个名为 users 的表,并添加 NOT NULL 约束 CREATE TABLE users ( id SERIAL PRIMARY KEY, name VARCHAR(50) NOT NULL, email VARCHAR(50) NOT NULL UNIQUE );

2. UNIQUE 约束

UNIQUE 约束用于确保指定列中的值是唯一的。如果试图向该列中插入非唯一值,则会引发错误。

sqlCopy Code
-- 对 name 和 email 列添加 UNIQUE 约束 ALTER TABLE users ADD CONSTRAINT unique_name_email UNIQUE (name, email);

3. PRIMARY KEY 约束

PRIMARY KEY 约束用于将一个或多个列作为表的主键。主键是一个唯一标识符,用于确保每行数据都是唯一的。通常,主键是表中的自增列。

sqlCopy Code
-- 将 id 列设置为主键 ALTER TABLE users ADD CONSTRAINT pk_users_id PRIMARY KEY (id);

4. FOREIGN KEY 约束

FOREIGN KEY 约束用于确保表中的数据符合父表的引用完整性。例如,如果表 A 中的一列是表 B 的主键,则在表 A 中插入数据时,必须确保该列中的值在表 B 中存在。

sqlCopy Code
-- 创建一个名为 orders 的表,并添加 FOREIGN KEY 约束 CREATE TABLE orders ( id SERIAL PRIMARY KEY, user_id INTEGER, amount NUMERIC(10, 2), FOREIGN KEY (user_id) REFERENCES users(id) );

5. CHECK 约束

CHECK 约束用于确保指定列中的值符合特定条件。例如,可以使用 CHECK 约束来确保某列中的值永远不会大于 100。

sqlCopy Code
-- 在 salary 列上添加 CHECK 约束 ALTER TABLE employees ADD CONSTRAINT check_salary CHECK (salary > 0);

以上是 PostgreSQL 中的常见约束类型及其实例。通过使用约束,可以确保表中的数据始终符合预期,从而提高数据的质量和可靠性。