📅  最后修改于: 2023-12-03 15:17:49.197000             🧑  作者: Mango
MySQL外键是一种约束,用于确保表格之间的数据完整性。外键关系用于将两个表格连接起来,以确保关联表格之间的数据保持一致。在 MySQL 中,外键关系可以用来实现表格的主从关系、父子关系、等等。本文将对 MySQL 外键进行介绍。
MySQL 外键是一种约束,用于将一个表格中的列与另一个表格中的列关联起来。一个外键列必须参考另一个表格的主键列(或者是唯一索引列)。在这种情况下,外键可以确保关联表格之间的数据完整性,防止插入无效的数据和删除关联数据。
MySQL 中可以通过以下方式创建外键:
ALTER TABLE table_name
ADD CONSTRAINT constraint_name
FOREIGN KEY (column_name)
REFERENCES parent_table (parent_column);
其中:
table_name
是要创建外键的表格的名称;constraint_name
是要添加的约束名称(可选);column_name
是要添加外键的列;parent_table
是父表格的名称;parent_column
是父主键列(或唯一索引列)的名称。例如,下面的 SQL 语句创建了一个名为 orders_ibfk_1
的外键,将 customer_id
列与 customers
表格中的 customer_id
列关联起来:
ALTER TABLE orders
ADD CONSTRAINT orders_ibfk_1
FOREIGN KEY (customer_id)
REFERENCES customers (customer_id);
外键约束可以确保表格之间的数据完整性。如果试图将无效数据插入到带有外键的表格中,将会引发错误。
例如,如果我们在 orders
表格中插入 customer_id
为 100 的数据,但是 customers
表格中没有 customer_id
为 100 的行,会发生以下错误:
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails
相反地,如果我们试图删除 customers
表格中已经有关联数据的行,也会发生错误:
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails
这是因为删除行会导致与之关联的行无效。
在 MySQL 中,外键约束可以通过以下操作进行维护:
启用外键:在添加外键约束后,默认情况下 MySQL 将启用它。如果需要手动启用它,可以使用以下命令:
SET FOREIGN_KEY_CHECKS = 1;
禁用外键:如果需要暂时禁用外键约束,可以使用以下命令:
SET FOREIGN_KEY_CHECKS = 0;
删除外键:可以使用以下命令删除外键约束:
ALTER TABLE table_name
DROP FOREIGN KEY constraint_name;
MySQL 外键是一种约束,用于确保表格之间的数据完整性。可以使用 ALTER TABLE
命令创建外键约束,并可以使用 FOREIGN KEY
和 REFERENCES
子句实现关联。外键约束可以确保插入和删除操作的正确性,提高数据的完整性和一致性。