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

在 MySQL 中,我们可以使用外键来建立表之间的关系。所谓的外键,就是从一个表中的字段引用了另一个表中的字段作为参照,用来保证表与表之间的数据一致性和完整性。在大多数实际应用的数据库设计中,使用外键是非常常见的。

为了演示在 MySQL 中如何建立外键,我们来创建一个订单表和一个客户表。订单表的设计如下:

```sql

CREATE TABLE `order` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`order_number` varchar(50) NOT NULL,

`customer_id` int(11) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

客户表的设计如下:

```sql

CREATE TABLE `customer` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(50) NOT NULL,

`email` varchar(50) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

在订单表中,`customer_id` 字段存储的是客户表中对应客户的 `id` 值,这样可以方便地查询订单所对应的客户。不过,如果在删除客户时不小心删除了某个客户,而该客户又有订单记录,那么这些订单的 `customer_id` 字段就指向一个不存在的客户,导致查询不准确。此时,我们就可以使用外键来解决这个问题。

下面是如何使用外键来建立表之间的关系:

```sql

-- 修改订单表

ALTER TABLE `order`

ADD CONSTRAINT `fk_order_customer`

FOREIGN KEY (`customer_id`) REFERENCES `customer` (`id`) ON DELETE CASCADE;

上面的 SQL 语句中,我们使用了 `ALTER TABLE` 命令来修改订单表。`ADD CONSTRAINT` 命令表示要添加一个约束,`fk_order_customer` 是约束的名称,`FOREIGN KEY` 命令表示这个约束是一个外键,`(` 和 `)` 中的 `customer_id` 是订单表中的字段,而 `REFERENCES` 命令后面的 `customer` 和 `id` 分别是客户表和客户表中的字段。

这样,我们就建立了订单表和客户表之间的关系,通过外键 `fk_order_customer` 来保证了订单表中的 `customer_id` 字段必须引用客户表中存在的 `id` 值。如果某个客户被删除,其对应的订单记录也会被自动删除,保证了数据一致性和完整性。

总结一下,在 MySQL 中建立表之间的关系,我们可以使用外键来实现。使用外键能够提高数据的一致性和完整性,从而保证数据库设计的可靠性。

在 MySQL 中用 FOREIGN KEY 关键字来创建外键,外键约束可以用来实现表之间的关联关系,保障数据的完整性和一致性。下面介绍如何在 MySQL 中建表添加外键。

首先,需要创建两个表,主表和从表。主表的主键会对应从表的外键。

例如,创建一个主表 user ,包含 id、name、age 三个字段:

CREATE TABLE user (

id INT PRIMARY KEY,

name VARCHAR(30) NOT NULL,

age INT

);

再创建一个从表 order ,包含 id、order_no、user_id 三个字段。其中,order 表的 user_id 字段用于存储 user 表的 id 值:

CREATE TABLE order (

id INT PRIMARY KEY,

order_no VARCHAR(30) NOT NULL,

user_id INT,

FOREIGN KEY (user_id) REFERENCES user(id)

);

从表 order 的 user_id 字段作为外键,它关联到 user 表的主键 id 上(即 user(id))。FOREIGN KEY 关键字指定了 user_id 是从表 order 的外键,并且它连接到了主表 user 的主键 id 上。

在创建完外键约束之后,需要注意以下几点:

1. 从表的外键数据类型必须与主表的主键数据类型相同;

2. 如果外键约束指定的主表数据行被删除或修改,则从表对应的外键也会自动删除或修改。可以使用 ON DELETE 和 ON UPDATE 子句来定义删除和修改时外键的行为。

例如,添加 ON DELETE CASCADE 子句,可以在主表数据行被删除时,自动删除从表对应的外键:

CREATE TABLE order (

id INT PRIMARY KEY,

order_no VARCHAR(30) NOT NULL,

user_id INT,

FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE CASCADE

);

至此,以上就是在 MySQL 中建表添加外键的方法。注意,外键约束是数据库设计中常用的一种约束,它可以提高数据的一致性和完整性。在实际应用中,我们可以根据需要来添加、修改和删除外键约束。