MySQL怎么弄外键
时间 : 2023-03-15 07:11:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

MySQL中的外键用于确保表之间的数据完整性和一致性。具体来说,它用于在一个表中创建与另一个表中特定列的关系。在MySQL中,创建外键需要以下步骤:

1. 创建主表和从表:

在创建外键之前,必须创建主表和从表。这两个表应该有一个共同的字段,它将用作外键。

2. 将从表中的字段制定为外键:

将从表中的某个字段指定为外键,需要使用FOREIGN KEY关键字。例如,下面的SQL语句将从表中的ID字段指定为外键:

CREATE TABLE `从表` (

`id` int(11) NOT NULL,

`name` varchar(255) DEFAULT NULL,

`主表_id` int(11) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `外键索引` (`主表_id`),

CONSTRAINT `外键名称` FOREIGN KEY (`主表_id`) REFERENCES `主表` (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

以上SQL语句中,主表中的id字段用作主键,并且在从表的`主表_id`字段上创建了外键索引。外键名称用于标识外键,以便随时可以更新或删除它。

3. 设置参照完整性:

通过设置参照完整性,可以确保在更新或删除主表中某个记录时,从表中的关联记录不会丢失或无效。在MySQL中,支持以下四种参照完整性规则:

- RESTRICT:防止删除或更新主表中的记录,如果在从表中有引用的记录时。

- CASCADE:当主表中的主键被删除或更新时,从表中的外键也会被删除或更新。

- SET NULL:当主表中的主键被删除或更新时,从表中的外键将被设置为NULL。

- NO ACTION:与RESTRICT相同,在MySQL中NO ACTION被视为RESTRICT。

在上面的SQL语句中,`REFERENCES`关键字用于设置参照完整性规则。例如,下面的SQL语句设置了CASCADE参照完整性规则:

CONSTRAINT `外键名称` FOREIGN KEY (`主表_id`) REFERENCES `主表` (`id`) ON DELETE CASCADE

注意,要使用FOREIGN KEY和REFERENCES关键字,必须使用InnoDB引擎。另外,在创建表时,必须首先创建主表,然后创建从表。

总之,MySQL外键对于确保表之间的数据完整性和一致性非常有用。要创建外键,必须在从表中指定外键,并设置参照完整性规则,以确保主表中的记录和从表中的记录保持一致。

MySQL是一种常用的关系型数据库管理系统。在MySQL中,可以使用外键来维护表之间的关系,确保数据完整性和一致性。本文将介绍如何在MySQL中创建和使用外键。

# 什么是外键

外键是一种约束,用于定义表之间的一种关系。它用于确保数据的完整性和一致性。外键关系是一种父子关系,其中一个表中的数据称为父表,另一个表中的数据称为子表。父表中的一个或多个列的值与子表中的一个或多个列的值相关联。子表中的外键列引用父表中的主键列。

# 创建外键

要创建外键,首先必须在父表中定义一个主键列。然后,在子表中创建一个列,该列与父表中的主键列关联。然后,使用ALTER TABLE语句在子表中创建一个外键约束。

以下是创建外键的一般步骤:

## 步骤1:创建父表

在MySQL中,可以通过CREATE TABLE语句来创建新表。在这个示例中,我们将创建名为“parent”的表。该表具有一个名称为“id”的列,该列将作为主键列:

CREATE TABLE `parent` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(255) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

## 步骤2:创建子表

在MySQL中,可以使用相同的CREATE TABLE语句来创建子表。在这个示例中,我们将创建一个名为“child”的表。该表具有一个称为“id”的列,该列将作为主键列,以及一个称为“parent_id”的列,该列将作为外键:

CREATE TABLE `child` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(255) DEFAULT NULL,

`parent_id` int(11) NOT NULL,

PRIMARY KEY (`id`),

KEY `fk_child_parent_idx` (`parent_id`),

CONSTRAINT `fk_child_parent` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`) ON DELETE CASCADE ON UPDATE CASCADE

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

## 步骤3:创建外键

在子表中创建一个外键,可以使用ALTER TABLE语句:

ALTER TABLE `child`

ADD CONSTRAINT `fk_child_parent`

FOREIGN KEY (`parent_id`)

REFERENCES `parent` (`id`)

ON DELETE CASCADE

ON UPDATE CASCADE;

在这个示例中,我们为子表“child”创建一个外键,称为“fk_child_parent”。这个外键引用了父表“parent”中的主键列“id”。

# 外键约束选项

在创建外键时,可以使用不同的约束选项来控制子表中的记录如何与父表中的记录进行交互。以下是常见的外键约束选项:

- ON DELETE CASCADE:当在父表中删除一条记录时,所有引用该记录的子表中的记录将被自动删除。

- ON DELETE SET NULL:当在父表中删除一条记录时,所有引用该记录的子表中的记录将被设置为空值。

- ON UPDATE CASCADE:当在父表中更新一条记录时,所有引用该记录的子表中的记录将被自动更新。

- ON UPDATE SET NULL:当在父表中更新一条记录时,所有引用该记录的子表中的记录将被设置为空值。

# 使用外键

使用外键时,子表中的外键列只能包含来自父表中主键列的值。此外,如果尝试在子表中插入一个不具有对应父表中的值的记录,MySQL将不允许该插入操作。

在使用外键时,可能会遇到以下错误之一:

- 1452错误:“外键约束检查失败”:发生此错误时,插入或更新操作违反了外键约束。

- 1215错误:“找不到外键父项”:发生此错误时,可能是由于父表或子表中不存在一些列或索引。

# 结论

外键是MySQL中维护表之间关系的一种关键技术。它们确保了数据的完整性和一致性。通过创建父表和子表,并使用ALTER TABLE语句创建外键约束,可以创建和使用外键。在使用外键时,必须遵循严格的规则,以确保表之间的关系得到正确地维护。