1. FOREIGN KEY 的概念
在 MySQL 中,FOREIGN KEY 是用于建立表之间关联的一种机制。它定义了一个列或者一组列,这些列与另一个表中的列相关联,因此可以将数据存储在多个相关的表中。
FOREIGN KEY 通常用于建立父子关系,其中一个表是父表,另一个表是子表。父表中的每一行都可以与子表中的多行相关联,但是子表中的每一行只能与父表中的一行相关联。
2. 如何在 MySQL 表中使用 FOREIGN KEY
使用 FOREIGN KEY 可以在 MySQL 表中建立关系。在建立表的时候,我们需要在列定义中使用关键字 FOREIGN KEY
,并且指定父表中的列名。
2.1 创建父表
我们首先需要创建父表,指定列名和数据类型。
CREATE TABLE `parent` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
`age` INT(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在上述代码中,我们创建了一个父表 parent
,其中包含三个列 id
、name
、age
。其中,id
列用于设置主键,以便用于与子表联接。
2.2 创建子表
接下来我们需要创建与父表相关联的子表。在创建子表时,我们需要使用关键字 FOREIGN KEY
来指定列所涉及的父表中的列名。
CREATE TABLE `child` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
`age` INT(11) NOT NULL,
`parent_id` INT(11) NOT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `fk_child_parent_id`
FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在上述代码中,我们首先定义了与父表联接的列 parent_id
。但是,我们还需要使用 约束条件。此处我们使用名称为 fk_child_parent_id
的约束关联子表到父表的 id
列。
2.3 约束条件
在 MySQL 中,约束条件用于对列中的数据进行规定。在 FOREIGN KEY 中,我们需要使用约束条件指定父表中的列。
下面是一些常用的约束条件:
NOT NULL
:确保列的值不能为空。
UNIQUE
:确保列的值是唯一的。
PRIMARY KEY
:用于设置主键。
FOREIGN KEY
:用于设置外键。
CHECK
:用于检查列中的值是否符合指定条件。
我们在上述代码中使用 FOREIGN KEY 设置了外键。这个外键约束的作用是将子表中的 parent_id
列相关联到父表中的 id
列。在这个示例中,通过FOREIGN KEY 约束条件,我们可以确保此列中的所有值都是父表中主键列。
2.4 进行插入操作
在创建完父表和子表之后,我们可以向两个表中插入数据。在插入数据时,需要将子表中的 parent_id
列与父表中的 id
列相关联,以确保它们是相关的。
INSERT INTO `parent` (`name`, `age`) VALUES ('John', 35);
INSERT INTO `child` (`name`, `age`, `parent_id`) VALUES ('Jane', 5, 1);
INSERT INTO `child` (`name`, `age`, `parent_id`) VALUES ('Bob', 6, 1);
在上述代码中,我们先将父表的一行插入到表中,接着将两行插入到子表中。在插入子表的两行数据时,我们使用 parent_id
列与父表中 id
列相关联。
3. 总结
FOREIGN KEY 是 MySQL 中用于建立表之间关联的机制。通过使用 FOREIGN KEY,我们可以建立父子关系,在父子表中存储相关的数据。在使用 FOREIGN KEY 时,我们需要定义父表和子表,并且使用相应的约束条件来定义关联。在插入数据时,我们需要使用子表中的列与父表中的列相关联,以确保它们是相关的。