MySQL是一種關系型數據庫管理系統,具有創建表的功能。在創建表時,除了定義各個數據列的數據類型和約束條件外,還可以通過添加外鍵來約束表之間的關系。下面介紹如何使用MySQL創建有外鍵的表。
-- 創建主表 CREATE TABLE `department` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- 創建從表 CREATE TABLE `employee` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, `department_id` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `fk_department_id` (`department_id`), CONSTRAINT `fk_department_id` FOREIGN KEY (`department_id`) REFERENCES `department` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
上述代碼首先創建了一個department表,該表包含id和name兩列,其中id為主鍵。接著創建了一個employee表,該表包含id、name和department_id三列,其中id為主鍵,department_id為外鍵。在創建employee表時,使用了KEY和CONSTRAINT關鍵字來指定department_id列的約束條件。
其中,KEY `fk_department_id` (`department_id`)定義了一個索引,名稱為fk_department_id,索引的列為department_id;
CONSTRAINT `fk_department_id` FOREIGN KEY (`department_id`) REFERENCES `department` (`id`) ON DELETE CASCADE ON UPDATE CASCADE定義了一個外鍵。它指定了:當刪除主表中具有關聯數據的記錄時,從表中的相關數據也將被刪除(ON DELETE CASCADE);當主表中的關聯數據更新時,從表中相關數據也將被更新(ON UPDATE CASCADE)。
使用以上語句,即可創建出帶有外鍵約束的employee表。