在MySQL中,外键约束用于在两个表之间建立链接,确保一个表中的数据在另一个表中存在。以下是创建外键约束的语法:
在创建表时添加外键约束
```sql
CREATE TABLE 表名 (
字段名1 数据类型1 [NOT NULL],
字段名2 数据类型2 [NOT NULL],
...,
字段名n 数据类型n [NOT NULL],
CONSTRAINT 约束名 FOREIGN KEY (外键列名) REFERENCES 主表名 (主键列名)
);
```
`表名`:要创建表的名称。
`字段名1, 字段名2, ..., 字段名n`:表中的字段名。
`数据类型1, 数据类型2, ..., 数据类型n`:对应字段的数据类型。
`约束名`:自定义的约束名称(可选)。
`外键列名`:要添加外键约束的列名。
`主表名`:与之关联的主表的名称。
`主键列名`:主表中对应的主键列名。
使用ALTER TABLE语句添加外键约束
```sql
ALTER TABLE 表名
ADD CONSTRAINT 约束名
FOREIGN KEY (外键列名)
REFERENCES 主表名 (主键列名);
```
`表名`:要添加外键约束的表的名称。
`约束名`:自定义的约束名称。
`外键列名`:要添加外键约束的列名。
`主表名`:与之关联的主表的名称。
`主键列名`:主表中对应的主键列名。
示例
假设我们有两个表:`departments` 和 `employees`,其中 `departments` 表有主键 `department_id`,我们希望在 `employees` 表中的 `dept_id` 列添加一个外键约束,指向 `departments` 表的 `department_id` 列。
创建 `departments` 表
```sql
CREATE TABLE departments (
department_id INT PRIMARY KEY,
department_name VARCHAR(100) NOT NULL
);
```
创建 `employees` 表并添加外键约束
```sql
CREATE TABLE employees (
emp_id INT PRIMARY KEY,
emp_name VARCHAR(100) NOT NULL,
dept_id INT,
CONSTRAINT fk_dept_id FOREIGN KEY (dept_id) REFERENCES departments(department_id)
);
```
或者使用 `ALTER TABLE` 语句:
```sql
ALTER TABLE employees
ADD CONSTRAINT fk_dept_id
FOREIGN KEY (dept_id)
REFERENCES departments(department_id);
```
通过这种方式,我们可以确保 `employees` 表中的 `dept_id` 列的值必须在 `departments` 表的 `department_id` 列中存在,从而维护数据的一致性和完整性。