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 引擎不支持外键。此外,外键也必须定义在一个索引字段上,以确保数据的一致性和高效性。
上一篇
mysql外键怎么查询表
下一篇
怎么产看mysql的版本
https/SSL证书广告优选IDC>>
推荐主题模板更多>>
推荐文章