MySQL中的外键(Foreign Key)是一种数据库约束,用于建立两个表之间的链接。外键确保了引用完整性,即在一个表中的数据必须匹配另一个表中的数据。
MySQL支持两种类型的外键约束:
外键常用于以下场景:
外键列和参照列的数据类型必须相同。
CREATE TABLE parent (
id INT PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE child (
id INT PRIMARY KEY,
parent_id INT,
FOREIGN KEY (parent_id) REFERENCES parent(id) -- 正确
);
参照列必须是主键或具有唯一索引。
CREATE TABLE parent (
id INT PRIMARY KEY,
name VARCHAR(50)
);
CREATE INDEX idx_parent_id ON parent(id);
CREATE TABLE child (
id INT PRIMARY KEY,
parent_id INT,
FOREIGN KEY (parent_id) REFERENCES parent(id) -- 正确
);
MySQL的MyISAM引擎不支持外键约束,需要使用InnoDB引擎。
CREATE TABLE parent (
id INT PRIMARY KEY,
name VARCHAR(50)
) ENGINE=InnoDB;
CREATE TABLE child (
id INT PRIMARY KEY,
parent_id INT,
FOREIGN KEY (parent_id) REFERENCES parent(id) -- 正确
) ENGINE=InnoDB;
外键名称必须在数据库中唯一。
CREATE TABLE parent (
id INT PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE child (
id INT PRIMARY KEY,
parent_id INT,
FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE -- 正确
);
CREATE TABLE parent (
id INT PRIMARY KEY,
name VARCHAR(50)
) ENGINE=InnoDB;
CREATE TABLE child (
id INT PRIMARY KEY,
parent_id INT,
FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE
) ENGINE=InnoDB;
通过以上步骤和示例代码,你应该能够成功地在MySQL中添加外键约束。如果仍然遇到问题,请检查错误信息并根据具体情况进行调整。
领取专属 10元无门槛券
手把手带您无忧上云