外键约束用于维护表间引用完整性,建表或修改表时可添加,支持级联操作。命名外键便于管理,通过information_schema查看,可用ON DELETE CASCADE等设置级联行为,删除外键需先查约束名再用ALTER TABLE DROP FOREIGN KEY,注意外键可能影响高并发性能。

在MySQL中,外键约束(Foreign Key Constraint)用于维护表之间的引用完整性,确保一个表中的数据与另一个表中的主键或唯一键保持一致。合理使用外键可以防止无效数据插入,同时支持级联操作,如自动更新或删除关联记录。
创建外键约束
在建表时或修改表结构时可以添加外键。外键通常指向另一张表的主键或唯一索引。
- 建表时定义外键:
CREATE TABLE orders (
order_id INT PRIMARY KEY,
user_id INT,
order_date DATE,
FOREIGN KEY (user_id) REFERENCES users(id)
);
- 如果表已存在,使用 ALTER TABLE 添加外键:
ALTER TABLE orders
ADD CONSTRAINT fk_user
FOREIGN KEY (user_id) REFERENCES users(id);
外键的命名与管理
为外键命名有助于后续维护。如果不指定名称,MySQL会自动生成一个,但不易识别。
查看表的外键信息:
SELECT CONSTRAINT_NAME, TABLE_NAME, COLUMN_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE REFERENCED_TABLE_NAME = 'users';
这条语句列出所有引用 users 表的外键关系。
设置级联行为
外键可配置级联操作,当主表数据变化时,自动处理从表数据。
- CASCADE:主表删除或更新时,从表对应记录也删除或更新
- SET NULL:主表删除时,从表外键字段设为 NULL(字段需允许 NULL)
- RESTRICT 或 NO ACTION:阻止删除或更新主表记录,如果从表有引用
示例:添加级联删除
HMCSS是由河马工作室全新开发的通用的企业网站系统,是PHP+MYSQL的架构,采用DIV+CSS的方式进行网页布局,网站的功能包括有:企业简介,图片展示幻灯,产品图片滚动,企业荣誉,实力展示,产品分类及展示,网上招聘,在线留言,联系我们,在线地图等内容,另外还带有完整的管理后台,如网站SEO优化关键词等都可以自由设定。 HMCSS目前发布的是1.0版本,就是上述的这些内容。后面我们还要加上产品
ALTER TABLE orders
ADD CONSTRAINT fk_user_delete
FOREIGN KEY (user_id) REFERENCES users(id)
ON DELETE CASCADE;
删除外键约束
如果不再需要外键,可通过约束名删除。
先查约束名:
SHOW CREATE TABLE orders;
找到外键对应的 CONSTRAINT 名称,例如 fk_user,然后执行:
ALTER TABLE orders
DROP FOREIGN KEY fk_user;
注意:删除外键不会删除普通索引,如有需要,需手动删除相关索引。
基本上就这些。外键能增强数据一致性,但在高并发或分库分表场景下可能带来性能开销或限制,需权衡使用。









