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 中的常见约束类型及其实例。通过使用约束,可以确保表中的数据始终符合预期,从而提高数据的质量和可靠性。