mysql怎么样建外键
时间 : 2023-03-19 20:43:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

外键(Foreign Key)是一种可以用来约束表与表之间关系的机制,它能够有效保证数据的一致性和完整性。在 MySQL 中,外键约束条件是在一张表中定义,它是指向另一张表的主键。同时,在创建外键时还可以指定一些约束行为,比如级联更新、级联删除等。

下面我将演示如何在 MySQL 中建立外键。

1. 创建表

首先我们需要创建两个表(t1 和 t2)供我们演示:

CREATE TABLE t1 (

id INT PRIMARY KEY,

name VARCHAR(50)

);

CREATE TABLE t2 (

id INT PRIMARY KEY,

t1_id INT,

age INT,

FOREIGN KEY(t1_id) REFERENCES t1(id)

);

在这里,我们创建了两个表 t1 和 t2,其中 t1 表的结构为一个 `id` 和一个 `name` 字段,t2 表的结构包含三个字段:`id`、`t1_id`和`age`。同时,我们在 t2 表中创建了一个名为 `t1_id` 的外键约束,使其指向 t1 表的 `id` 字段。

在 MySQL 中,定义外键约束的语法为:

FOREIGN KEY(外键列名) REFERENCES 目标表(主键列名)

2. 添加数据

现在我们向 t1 表中插入一些数据:

INSERT INTO t1 VALUES(1, 'Tom');

INSERT INTO t1 VALUES(2, 'Jack');

再向 t2 表中插入一些数据,这里为了演示 `级联操作`,我们先插入一条 `t1_id=1` 的数据:

INSERT INTO t2 VALUES(1, 1, 20);

3. 查询数据

我们可以通过下面的查询语句来查看结果:

SELECT * FROM t1;

SELECT * FROM t2;

此时输出的结果如下:

表 t1:

| id | name |

|----|------|

| 1 | Tom |

| 2 | Jack |

表 t2:

| id | t1_id | age |

|----|-------|-----|

| 1 | 1 | 20 |

在我们查询 t2 表的 t1_id 字段时,可以看到其指向了 t1 表中的 `id` 列,并且 t2 表中的 `t1_id` 列添加了外键约束,它只包含 t1 表中已存在的 `id` 值。如果我们尝试在 t2 表中插入一个不存在于 t1 表中的 `t1_id` 值,则会引发外键约束错误。

4. 级联操作

在创建外键约束时,MySQL 还支持级联操作。级联操作是指当我们对一个表中的数据进行更新或删除时,MySQL 能够同时自动在关联的表中更新或删除与之相关的数据。

我们可以通过下面的语句来创建级联更新和级联删除的约束:

CREATE TABLE t3 (

id INT PRIMARY KEY,

t1_id INT,

age INT,

FOREIGN KEY(t1_id) REFERENCES t1(id) ON UPDATE CASCADE ON DELETE CASCADE

);

在这里我们创建了一个名为 t3 的表,它包含三个字段:`id`、`t1_id` 和 `age`。同时,我们在 t3 表中创建了一个名为 `t1_id` 的外键约束,使其指向 t1 表的 `id` 字段。并且通过 `ON UPDATE CASCADE ON DELETE CASCADE` 的设置实现了级联更新和级联删除。

这里的 `ON UPDATE CASCADE` 表示当 t1 表中的 `id` 值被更新时,t3 表中关联的 `t1_id` 值也会被自动更新。同理,`ON DELETE CASCADE` 表示当 t1 表中的某一行被删除时,t3 表中关联该行的数据也会被自动删除。

现在我们可以尝试更新 t1 表中的一行数据:

UPDATE t1 SET id = 3 WHERE id = 2;

再次查询 t3 表中的数据:

SELECT * FROM t3;

此时输出的结果如下:

| id | t1_id | age |

|----|-------|-----|

| 1 | 1 | 20 |

可以看到,当我们更新了 t1 表中的一行数据时,t3 表中的关联数据也被同时更新了。

综上,MySQL 的外键机制可以用来约束表与表之间关系,它能够有效保证数据的一致性和完整性,并且通过级联更新和级联删除的设置可以让表与表之间的数据操作更为自动化和高效化。

在MySQL中,外键是用来建立表之间的关联关系,通过外键可以实现在一张表中引用另一张表中的数据。在建立外键之前,需要先建立主键和唯一索引才能将其作为外键来使用。

下面是在MySQL中建立外键的步骤:

1. 建立主表和从表:在建立外键之前,需要先确定哪个表是主表,哪个表是从表。在建立表的时候,要注意主表中的主键字段和唯一索引字段。

2. 建立外键:在从表中建立外键时,需要使用 FOREIGN KEY 关键字和 REFERENCES 子句。

语法:FOREIGN KEY (外键字段) REFERENCES 主表名称 (主键字段);

例如,在从表中建立外键,外键字段为 customer_id,主表为 customers,主键字段为 id,可以使用以下的SQL语句:

ALTER TABLE orders

ADD CONSTRAINT fk_customer

FOREIGN KEY (customer_id) REFERENCES customers(id);

3. 检查外键:在建立外键之后,需要检查外键是否有效。可以使用以下的SQL语句来检查外键是否正确:

SHOW CREATE TABLE orders;

该语句将显示orders表的详细信息,其中包括外键约束。

总之,在MySQL中建立外键需要遵循以上步骤,先建立主表和从表,然后在从表中建立外键,最后检查外键是否有效。这样,就可以使表与表之间建立关联关系,方便数据库的操作和管理。