mysql中什么是外键

文 / @WordPress主题

MySQL中什么是外键

在MySQL中,外键(foreign key)是一个用来建立两个表之间联系的列或多列。它指示一个表中的字段与另一个表中的字段相关联,外键对数据的完整性起着重要作用,它能够保证数据的一致性,特别是当数据被删除或更新时。外键通常使用与另一个表中的主键相匹配的值来定义。当一个表A中的某个字段是和另一个表B中的主键字段相关联时,我们称表A中的该字段为外键字段。

具体来说,MySQL中的外键约束可以强制实施参照完整性(referential integrity),一个被它约束的字段必须存在于另一个表中的某个主键值中,否则对于该字段的操作将被禁止。比如,在一个表示订单明细的表中,我们可以通过外键约束来限制每笔订单必须关联某个客户。这样就可以防止用户误操作,保持数据的一致性。

如何定义外键

在MySQL中定义外键可以使用以下语法:

CREATE TABLE table_name (
column1 datatype CONSTRAINT FK_name FOREIGN KEY (column_name) REFERENCES parent_table (column_name)
);

其中,FK_name是自定义的外键约束名称,column_name是包含外键的列,parent_table是被引用的表,column_name是主键或候选键。

需要注意的一些规则:

- 外键只能引用一个主键或候选键;
- 外键的类型必须与被引用的主键的类型匹配;
- 被引用的表中的主键或候选键必须已经存在,或者它与当前表是同一个表,这种情况被称为自参照;
- 被引用的主键或候选键不能被重复引用。

举个例子,我们在表中创建一个外键约束来引用另一个表的主键:

CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
FOREIGN KEY (customer_id)
REFERENCES customers(customer_id)
);

在这个例子中,我们在orders表中定义了一个外键,它引用了customers表中的主键customer_id,这个外键确保了我们无法向orders表中添加一个customer_id,这个customer_id在customers表中不存在。

如何添加、修改和删除外键

在MySQL中添加、修改和删除外键可以使用ALTER TABLE语句。

添加外键

我们可以使用以下语法在表中添加外键:

ALTER TABLE table_name ADD CONSTRAINT FK_name FOREIGN KEY (column_name) REFERENCES parent_table (column_name);

其中,FK_name是自定义的外键约束名称,column_name是包含外键的列,parent_table是被引用的表,column_name是主键或候选键。

比如,我们可以在orders表中添加一个外键来引用customers表的主键:

ALTER TABLE orders
ADD CONSTRAINT FK_orders_customers FOREIGN KEY (customer_id) REFERENCES customers(customer_id);

修改外键

我们可以使用以下语法来修改表中的外键:

ALTER TABLE table_name DROP FOREIGN KEY FK_name;
ALTER TABLE table_name ADD CONSTRAINT FK_name FOREIGN KEY (column_name) REFERENCES parent_table (column_name);

其中,FK_name是外键约束名称,column_name是包含外键的列,parent_table是被引用的表,column_name是主键或候选键。

删除外键

我们可以使用以下语法来从表中删除外键:

ALTER TABLE table_name DROP FOREIGN KEY FK_name;

其中,FK_name是要删除的外键名称。

禁用外键检查

有时,需要禁用外键检查,例如在导入数据时。可以使用以下语句禁用外键检查:

SET FOREIGN_KEY_CHECKS=0;

而启用外键检查的语句是:

SET FOREIGN_KEY_CHECKS=1;

总结

在MySQL中,外键是用于建立和加强两个表数据之间的链接的一列或多列。通过外键约束,可以维护两个表之间的参照完整性,并且可以保证数据的一致性。在MySQL中定义外键、添加、修改和删除外键都有一定的规则和限制,需要注意。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。