mysql外键怎么创的
时间 : 2023-03-11 04:45:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性
在 MySQL 中创建外键,需要用到 FOREIGN KEY 关键字和 REFERENCES 子句。
语法如下:
```sql
ALTER TABLE 表名
ADD CONSTRAINT 外键名
FOREIGN KEY (外键列名)
REFERENCES 主表名 (主键列名)
ON DELETE CASCADE
ON UPDATE CASCADE;
其中,
- 表名:指定需要添加外键的表名。
- 外键名:可以给外键一个名字(可选)。
- 外键列名:指定当前表中需要作为外键的列名。
- 主表名:指定被引用的主表的表名。
- 主键列名:指定被引用的主表中作为主键的列名。
- ON DELETE CASCADE 和 ON UPDATE CASCADE:CASCADE 表示级联,即删除或更新主表中的数据时,对应的外键表中的相关数据也会被相应地删除或更新。
下面通过一个例子来演示如何在 MySQL 中创建外键。
假设我们需要创建一个订单表和一个客户表,订单表统计了客户要购买的商品信息,客户表则保存了客户的基本信息,这两个表之间存在一对多的关系,即一个客户可以对应多个订单,而一个订单只能对应一个客户。
我们可以先创建客户表,创建语句如下:
```sql
CREATE TABLE customer (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL UNIQUE
);
创建订单表,创建语句如下:
```sql
CREATE TABLE order_list (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
customer_id INT NOT NULL,
product_name VARCHAR(50) NOT NULL,
price DECIMAL(10,2) NOT NULL,
FOREIGN KEY (customer_id) REFERENCES customer (id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
在上面的例子中,我们在订单表中添加了一个名为 customer_id 的外键,该外键指向客户表中的 id 列。
注意:在创建外键时需要注意两个表之间的数据类型和值必须相同,不然会报错。
执行上面的语句后即可创建一个包含外键的订单表,并且该外键指向客户表中的主键 id。在删除或更新客户表中的数据时,订单表中的相关数据也会被级联删除或更新。
希望这篇文章可以帮助你理解如何在 MySQL 中创建外键。
MySQL 外键是用于关联两张表之间的一种约束,它可以保证在修改或删除主表数据时不会对从表数据产生不良影响。下面是创建 MySQL 外键的步骤:
1. 创建主表和从表
首先需要创建两张表,一张是主表,另一张是从表。主表和从表需要有一个共同的字段,可以将主表中的主键设为从表中的外键。
例如,在创建两张表时,可以使用以下的 SQL 语句:
```mysql
CREATE TABLE `customers` (
`customer_id` INT NOT NULL PRIMARY KEY,
`name` VARCHAR(50),
`email` VARCHAR(50)
);
CREATE TABLE `orders` (
`order_id` INT NOT NULL PRIMARY KEY,
`customer_id` INT,
`order_date` DATE,
FOREIGN KEY (`customer_id`) REFERENCES `customers`(`customer_id`)
);
在上面的 SQL 语句中,`customers` 表是主表,`orders` 表是从表。从表中的 `customer_id` 字段是外键,关联主表中的 `customer_id` 字段。
2. 创建外键
在创建从表时,需要在包含外键的字段上使用 `FOREIGN KEY` 关键字和 `REFERENCES` 子句,制定外键所连接的主表和字段。
例如,在上面的 SQL 语句中,`orders` 表中的 `customer_id` 列是外键,连接到 `customers` 表中的 `customer_id` 列。该外键可以保证在删除或修改父表中的数据前,必须先删除或修改从表中有关的数据。
3. 外键约束的选项
可以为外键添加约束选项,以指定当更新或删除主表中的数据时,如何修改或删除从表中的数据。以下是外键约束选项的常用选项:
- `CASCADE`:如果在主表中修改或删除数据,则从表中也进行相应的操作。
- `SET NULL`:如果在主表中修改或删除数据,则从表中外键列的值设置为 NULL。
- `RESTRICT`:如果在主表中修改或删除数据,则引发错误并拒绝操作。
- `NO ACTION`:类似于 `RESTRICT`,但不触发错误而是忽略操作。
例如,在上面的 SQL 语句中,指定 `ON DELETE CASCADE`,如果在`customers` 表中删除数据,则 `orders` 表中对应的外键也会被删除,以避免数据出现不一致。
```mysql
CREATE TABLE `customers` (
`customer_id` INT NOT NULL PRIMARY KEY,
`name` VARCHAR(50),
`email` VARCHAR(50)
);
CREATE TABLE `orders` (
`order_id` INT NOT NULL PRIMARY KEY,
`customer_id` INT,
`order_date` DATE,
FOREIGN KEY (`customer_id`) REFERENCES `customers`(`customer_id`) ON DELETE CASCADE
);
通过以上步骤,就可以创建 MySQL 外键。在实际应用中,外键可以帮助我们保持数据一致性并提高数据的完整性。
上一篇
mysql命令行怎么刷新
下一篇
mysql分表后怎么分页
https/SSL证书广告优选IDC>>
推荐主题模板更多>>
推荐文章