1. 创建主表和从表
CREATE TABLE `tb_department` ( `dept_id` int(11) NOT NULL AUTO_INCREMENT, `dept_name` varchar(50) DEFAULT NULL, PRIMARY KEY (`dept_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `tb_employee` ( `emp_id` int(11) NOT NULL AUTO_INCREMENT, `emp_name` varchar(50) DEFAULT NULL, `dept_id` int(11) DEFAULT NULL, PRIMARY KEY (`emp_id`), KEY `dept_id` (`dept_id`), CONSTRAINT `tb_employee_ibfk_1` FOREIGN KEY (`dept_id`) REFERENCES `tb_department` (`dept_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这里创建了两个表,tb_department作为主表,tb_employee作为从表。tb_department中dept_id为主键,tb_employee中dept_id为外键,关联到tb_department的dept_id字段上。注意,引擎类型需选择InnoDB,因为只有InnoDB支持外键。
2. 建立外键
ALTER TABLE `tb_employee` ADD CONSTRAINT `tb_employee_ibfk_1` FOREIGN KEY (`dept_id`) REFERENCES `tb_department`(`dept_id`);
上面的代码可以来实现在已有表上添加外键约束。名为tb_employee_ibfk_1的约束,关联到tb_department的dept_id字段上。注意,如果已经有重名的外键约束,此语句执行会报错。
3. 删除外键
ALTER TABLE `tb_employee` DROP FOREIGN KEY `tb_employee_ibfk_1`;
删除外键时,需要指定外键的名称,使用DROP FOREIGN KEY语句即可。这里指定了tb_employee_ibfk_1作为外键名称。
总结:MySQL中建立外键需要考虑表之间的关系,主表和从表的字段要保持一致,必须使用InnoDB引擎,建立外键可以使用CREATE TABLE或ALTER TABLE语句,删除外键使用ALTER TABLE语句。