MySQL是一款流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。在設(shè)計數(shù)據(jù)庫時,有時需要建立表之間的關(guān)系,這時就需要用到外鍵。外鍵可以保證數(shù)據(jù)的完整性和一致性,使得表之間的關(guān)系更加清晰。下面介紹MySQL中如何建立外鍵。
1. 創(chuàng)建主表和從表
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;
這里創(chuàng)建了兩個表,tb_department作為主表,tb_employee作為從表。tb_department中dept_id為主鍵,tb_employee中dept_id為外鍵,關(guān)聯(lián)到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`);
上面的代碼可以來實現(xiàn)在已有表上添加外鍵約束。名為tb_employee_ibfk_1的約束,關(guān)聯(lián)到tb_department的dept_id字段上。注意,如果已經(jīng)有重名的外鍵約束,此語句執(zhí)行會報錯。
3. 刪除外鍵
ALTER TABLE `tb_employee` DROP FOREIGN KEY `tb_employee_ibfk_1`;
刪除外鍵時,需要指定外鍵的名稱,使用DROP FOREIGN KEY語句即可。這里指定了tb_employee_ibfk_1作為外鍵名稱。
總結(jié):MySQL中建立外鍵需要考慮表之間的關(guān)系,主表和從表的字段要保持一致,必須使用InnoDB引擎,建立外鍵可以使用CREATE TABLE或ALTER TABLE語句,刪除外鍵使用ALTER TABLE語句。