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 中建表添加外键的方法。注意,外键约束是数据库设计中常用的一种约束,它可以提高数据的一致性和完整性。在实际应用中,我们可以根据需要来添加、修改和删除外键约束。
上一篇
MySQL中怎么找数据表
下一篇
mysql性能指数怎么看
https/SSL证书广告优选IDC>>
推荐主题模板更多>>
推荐文章