mysql里怎么建立外键
时间 : 2023-03-10 12:11:01声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

MySQL中建立外键可以通过以下步骤进行:

1. 创建外键的表格和引用的表格

在MySQL中,创建外键之前需要先创建两个表格,一个是外键参考的表格,另一个是创建外键的表格。在创建表格时需要注意,这两个表格必须使用InnoDB引擎,因为只有InnoDB引擎支持外键功能。

例如,创建一个order表格和一个customer表格,order表格中有一个customer_id外键,该外键参考于customer表格的id字段,可以使用以下命令创建表格:

CREATE TABLE customer(

id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

name VARCHAR(20) NOT NULL,

email VARCHAR(50)

) ENGINE=InnoDB;

CREATE TABLE order(

id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

customer_id INT UNSIGNED,

FOREIGN KEY (customer_id) REEERENCES customer(id)

) ENGINE=InnoDB;

2. 创建外键

创建表格后,我们需要在order表格中创建外键。在MySQL中,可以使用FOREIGN KEY命令来创建外键。

在上面的例子中,我们可以使用以下命令在order表格中创建外键:

ALTER TABLE order

ADD CONSTRAINT fk_order_customer

FOREIGN KEY (customer_id) REFERENCES customer(id);

其中,ADD CONSTRAINT表示添加约束,FOREIGN KEY表示外键,fk_order_customer是外键的名称,customer_id是order表格中的外键字段,REFERENCES customer(id)表示外键参考了customer表格中的id字段。

需要注意的是,如果要创建外键的表格中有数据,那么这些数据必须符合外键的约束条件,否则会导致创建外键失败。

3. 删除外键

如果需要删除外键,可以使用以下命令:

ALTER TABLE order

DROP FOREIGN KEY fk_order_customer;

其中,DROP来删除外键,fk_order_customer是外键名称。

总结:

在MySQL中,建立外键需要创建两个表格,使用InnoDB引擎,并使用FOREIGN KEY命令添加约束。外键还可以删除,使用DROP命令即可。外键的使用可以提高数据的完整性和一致性。

在 MySQL 中,外键用于建立两个表之间的关联。外键是一个指向另一个表中主键的字段,以确保数据的完整性和一致性。当使用外键时,必须先在主表中创建主键,然后在从表中创建外键。在建立外键时,需要遵循以下步骤:

1. 创建主表

首先,需要在 MySQL 数据库中创建主表,并指定一个主键。主表是包含主键的表,不需要在主表中建立外键关系。例如,下面是一个创建主表的示例 SQL 语句:

CREATE TABLE customers (

id INT PRIMARY KEY AUTO_INCREMENT,

name VARCHAR(255) NOT NULL,

email VARCHAR(255) NOT NULL UNIQUE

);

在上面的示例中,创建了一个名为 customers 的表,其中包含一个名为 id 的主键和两个非空字段 name 和 email。

2. 创建从表

其次,需要在 MySQL 数据库中创建从表,并在该表中创建外键,以指定与主表之间的关联。从表是包含外键的表,用于与主表建立关联。例如,下面是一个创建从表的示例 SQL 语句:

CREATE TABLE orders (

id INT PRIMARY KEY AUTO_INCREMENT,

customer_id INT NOT NULL,

order_date DATE NOT NULL,

FOREIGN KEY (customer_id) REFERENCES customers(id)

);

在上面的示例中,创建了一个名为 orders 的表,其中包含一个名为 id 的主键,一个非空字段 order_date 和一个 customer_id 字段。通过在 customer_id 字段上使用 FOREIGN KEY 关键字,并指定 REFERENCES 子句,从表可以与主表建立关联。在这里,customer_id 字段是 orders 表中的外键,指向主表 customers 中的 id 字段。这意味着 orders 表中的每个订单必须与 customers 表中的一个客户相关联。

3. 测试外键

完成以上两个步骤后,可以测试外键关系是否可以正常工作。如果外键关系设置正确,当尝试在 orders 表中插入一个与 customers 表中不存在的客户 ID 时,则会出现错误消息。例如:

INSERT INTO orders (customer_id, order_date) VALUES (10, '2021-09-01');

在上面的示例中,尝试将订单插入到 orders 表中,但客户 ID 为 10 并不存在于 customers 表中。此时,MySQL 数据库会返回以下错误消息:

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`test`.`orders`, CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`))

这意味着外键约束限制了必须同时存在 customers 表和 orders 表中的相关数据。

需要注意的是,在使用外键时,必须在两个表中都使用 InnoDB 引擎。MyISAM 引擎不支持外键。此外,外键也必须定义在一个索引字段上,以确保数据的一致性和高效性。