1. 约束介绍
在数据库中,约束是一种用于保护数据完整性的限制条件。它们用于强制执行规则,并防止插入错误类型的数据。常见的约束有:主键约束、唯一约束、检查约束和外键约束。
主键约束是一种用于唯一标识一条记录的限制条件。在一个表中只能有一个主键,主键列中的值不能为空并且必须在整个表中唯一。在创建表时指定主键约束,或者使用ALTER TABLE语句添加主键约束。
唯一约束用于确保表中某个列的值唯一。在创建表时指定唯一约束,或者使用ALTER TABLE语句添加唯一约束。
检查约束用于强制执行一组规则,来确保表中的某列的数据有效。在创建表时指定检查约束,或者使用ALTER TABLE语句添加检查约束。
外键约束用于确保表之间的数据完整性。在一个表中,可以使用外键关联到另一个表的主键列,确保它们之间的数据一致性。在创建表时指定外键约束,或者使用ALTER TABLE语句添加外键约束。
2. 增加主键约束
增加主键约束需要注意以下几点:
2.1 创建表时指定主键约束
在创建表时指定主键约束,需要使用PRIMARY KEY关键字,并将其指定为要成为主键的列。例如,下面的代码创建了一个名为employees
的表,其中id
列为主键:
CREATE TABLE employees (
id INT NOT NULL PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
email VARCHAR(100),
hire_date DATE
);
2.2 添加主键约束
要添加主键约束,需要使用ALTER TABLE语句,并指定要添加主键约束的表和列。例如,下面的代码在employees
表中添加了一个名为pk_employees
的主键约束:
ALTER TABLE employees
ADD CONSTRAINT pk_employees PRIMARY KEY (id);
3. 增加唯一约束
增加唯一约束需要注意以下几点:
3.1 创建表时指定唯一约束
在创建表时指定唯一约束,需要使用UNIQUE关键字,并将其指定为要成为唯一约束的列。例如,下面的代码创建了一个名为employees
的表,其中email
列为唯一约束:
CREATE TABLE employees (
id INT NOT NULL,
first_name VARCHAR(50),
last_name VARCHAR(50),
email VARCHAR(100) UNIQUE,
hire_date DATE
);
3.2 添加唯一约束
要添加唯一约束,需要使用ALTER TABLE语句,并指定要添加唯一约束的表和列。例如,下面的代码在employees
表中添加了一个名为uk_employees_email
的唯一约束:
ALTER TABLE employees
ADD CONSTRAINT uk_employees_email UNIQUE (email);
4. 增加检查约束
增加检查约束需要注意以下几点:
4.1 创建表时指定检查约束
在创建表时指定检查约束,需要使用CHECK关键字,并将其指定为要成为检查约束的列的规则。例如,下面的代码创建了一个名为employees
的表,其中salary
列的值必须大于等于0:
CREATE TABLE employees (
id INT NOT NULL PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
salary NUMERIC(15, 2) CHECK (salary >= 0),
hire_date DATE
);
4.2 添加检查约束
要添加检查约束,需要使用ALTER TABLE语句,并指定要添加检查约束的表和列的规则。例如,下面的代码在employees
表中添加了一个名为ck_employees_salary
的检查约束:
ALTER TABLE employees
ADD CONSTRAINT ck_employees_salary CHECK (salary >= 0);
5. 增加外键约束
增加外键约束需要注意以下几点:
5.1 创建表时指定外键约束
在创建表时指定外键约束,需要在参照外键的表中使用FOREIGN KEY关键字,并将其指定为要成为外键的列。例如,下面的代码创建了一个名为departments
的表,其中manager_id
列参照employees
表的id
列,确保它们之间的数据一致性:
CREATE TABLE departments (
id INT NOT NULL PRIMARY KEY,
name VARCHAR(50),
manager_id INT,
CONSTRAINT fk_departments_manager_id
FOREIGN KEY (manager_id) REFERENCES employees(id)
);
5.2 添加外键约束
要添加外键约束,需要使用ALTER TABLE语句,并指定要添加外键约束的表和列的参照表和列。例如,下面的代码在departments
表中添加了一个名为fk_departments_manager_id
的外键约束:
ALTER TABLE departments
ADD CONSTRAINT fk_departments_manager_id
FOREIGN KEY (manager_id) REFERENCES employees(id);
6. 总结
约束是一种非常重要的机制,用于保护数据库中的数据完整性。在设计数据库时,合理使用约束可以让数据库更加健壮和安全。在增加约束时,需要注意约束类型和规则,并确保代码正确执行。