mysql表怎么创建外键
时间 : 2023-03-09 16:32:01声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

MySQL数据库中的外键是用来约束一个表中关联另一个表的字段的一种机制。在创建外键之前,需要先创建与其关联的表,并确保主表的字段被定义为主键。以下是如何创建MySQL表的外键的步骤。

### 第一步:创建主表和从表

首先,需要创建主表和从表。在以下示例中,创建两个名为`orders`和`customers`的表。`orders`表将作为主表,而`customers`表将作为从表。

CREATE TABLE orders (

id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

order_date DATE,

customer_id INT,

CONSTRAINT fk_customer_id

FOREIGN KEY (customer_id)

REFERENCES customers(id)

);

CREATE TABLE customers (

id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

first_name VARCHAR(50),

last_name VARCHAR(50),

email VARCHAR(50)

);

在上面的代码中,`orders`表定义了一个`customer_id`字段,用于关联到`customers`表中的`id`字段。这个关联由`fk_customer_id`外键约束。

### 第二步:创建外键

下一步是创建外键约束。在MySQL中,可以使用`FOREIGN KEY`关键字创建外键。下面是创建外键的示例代码

ALTER TABLE orders

ADD CONSTRAINT fk_customer_id

FOREIGN KEY (customer_id)

REFERENCES customers(id);

在上面的代码中,我们使用`ALTER TABLE`语句添加了一个外键约束。外键的名称为fk_customer_id,与orders表中的customer_id字段关联。该外键的目标是customers表中的id字段。

### 第三步:测试外键

现在,创建一个示例记录,来测试外键约束。

首先,在`customers`表中添加一些记录。

INSERT INTO customers (first_name, last_name, email)

VALUES ('John', 'Doe', 'johndoe@example.com'),

('Jane', 'Doe', 'janedoe@example.com');

接下来,在`orders`表中添加一些记录,其中`customer_id`应该是有效的`customers`表中的`id`。

INSERT INTO orders (order_date, customer_id)

VALUES ('2021-05-01', 1),

('2021-05-02', 2),

('2021-05-03', 3); -- 实际上这个记录是无效的,因为customers表中没有id=3的记录

在上面的代码中,第三条INSERT语句应该会产生一个错误,因为在`customers`表中没有`id`为3的记录。

可以使用以下命令来查看产生的错误:

SHOW ENGINE INNODB STATUS;

### 第四步:删除外键

如果不再需要外键,可以使用以下命令将其删除:

ALTER TABLE orders

DROP FOREIGN KEY fk_customer_id;

在上面的代码中,我们使用`ALTER TABLE`语句删除了名为`fk_customer_id`的外键。

总结一下,这些是创建MySQL表的外键的步骤:

1. 创建主表和从表。

2. 使用`ALTER TABLE`语句创建外键约束。

3. 测试外键。

4. 如果不需要外键,则使用`ALTER TABLE`语句删除外键。

希望这篇文章对创建MySQL表的外键有所帮助。