關系型數據庫中,多個表之間往往存在關聯關系,這時就可以使用外鍵來建立表與表之間的聯系。在MySQL中,外鍵是指一個表的一個或多個列,這些列的值必須與另一個表的主鍵或唯一鍵的值相同。
在MySQL中,被引用的表中的列稱為主表的主鍵。對于一個外鍵關系,每個從表應該只有一個外鍵。一個主表可以有多個外鍵,一個外鍵可以在表中的多個列中出現。
-- 創建主表 CREATE TABLE `department` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB; -- 創建從表 CREATE TABLE `employee` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) NOT NULL, `department_id` INT(11) NOT NULL, PRIMARY KEY (`id`), CONSTRAINT `fk_employee_department` FOREIGN KEY (`department_id`) REFERENCES `department` (`id`) ON DELETE CASCADE ) ENGINE=INNODB;
上面的代碼中,department
表是主表,employee
表是從表。employee
表中的department_id
列是外鍵,它引用了主表department
中的id
列。
當從表中的department_id
列的值與主表department
中id
列的值相同時,才能插入從表中的數據。在這種情況下,如果刪除主表中的某行,則從表中引用該行的數據也將被刪除(ON DELETE CASCADE)。
在使用外鍵時,需要注意以下幾點:
- 在MySQL中,只有InnoDB存儲引擎支持外鍵。
- 外鍵會影響插入和更新操作的性能,因此需要謹慎使用外鍵,尤其是在大規模的數據表中。
- 外鍵可以提高數據的完整性和可靠性,因為它可以保證表與表之間的約束關系。