SQL 约束(Constraints)是用于确保数据库中数据准确性和可靠性的一种机制。它们定义了表中数据的规则和限制,帮助维护数据的完整性。以下是一些常用的 SQL 约束类型及其详细说明:
1. PRIMARY KEY(主键)
- 唯一标识表中的每一行。
- 不能包含 NULL 值。
- 一个表中只能有一个主键。
2. FOREIGN KEY(外键)
- 用于建立两个表之间的关系。
- 外键列的值必须在关联表的主键中存在,或者为 NULL。
3. UNIQUE(唯一)
- 保证列中的所有值都是不同的。
- 可以有 NULL 值。
4. NOT NULL(非空)
- 确保列不能包含 NULL 值。
5. CHECK(检查)
- 用于确保列中的值满足特定的条件。
6. DEFAULT(默认值)
- 指定列在没有提供值时的默认值。
SQL CREATE TABLE + CONSTRAINT 语法
以下是创建表时使用约束的语法:
CREATE TABLE table_name
(
column_name1 data_type(size) CONSTRAINT constraint_name1 constraint_type,
column_name2 data_type(size) CONSTRAINT constraint_name2 constraint_type,
column_name3 data_type(size) CONSTRAINT constraint_name3 constraint_type,
...
);
table_name
:新表的名称。column_name
:列的名称。data_type
:数据类型。size
:数据类型的大小(对于某些数据类型是必需的)。CONSTRAINT
:定义约束的关键字。constraint_name
:约束的名称。constraint_type
:约束的类型,如 PRIMARY KEY、FOREIGN KEY 等。
代码示例
假设我们正在创建一个名为 employees
的表,其中包含员工的 ID、姓名和部门 ID。我们将为这个表添加一些约束:
CREATE TABLE employees
(
employee_id INT CONSTRAINT pk_employee PRIMARY KEY,
first_name VARCHAR(50) CONSTRAINT nn_first_name NOT NULL,
last_name VARCHAR(50) CONSTRAINT nn_last_name NOT NULL,
department_id INT CONSTRAINT fk_department FOREIGN KEY REFERENCES departments department_id
);
在这个例子中:
employee_id
是主键,使用PRIMARY KEY
约束。first_name
和last_name
都不能包含 NULL 值,使用NOT NULL
约束。department_id
是外键,引用了departments
表中的department_id
,使用FOREIGN KEY
约束。