MySQL數據庫外鍵是指在一個表中創建的一個字段,引用了另一個表中的某個字段。外鍵可以保證數據的完整性,防止出現不一致的情況。
CREATE TABLE `table1` ( `id` INT(11) NOT NULL, `name` VARCHAR(50) NOT NULL, `table2_id` INT(11) NOT NULL, PRIMARY KEY (`id`), CONSTRAINT `fk_table2_id` FOREIGN KEY (`table2_id`) REFERENCES `table2` (`id`) );
上述代碼中,CREATE TABLE語句用于創建一個表,其中包含字段id、name和table2_id。field_id和name的類型分別為INT和VARCHAR。在table1表的最后一個字段中,使用了FOREIGN KEY約束,將table2_id設置為一個外鍵。CONSTRAINT `fk_table2_id`是擁有名稱的約束。FOREIGN KEY (`table2_id`)表示在table1表中,有一個字段叫table2_id,它引用了另一個表table2中的id字段。
外鍵還可以指定CASCADE操作,來實現級聯更新和級聯刪除。例如:
CREATE TABLE `table1` ( `id` INT(11) NOT NULL, `name` VARCHAR(50) NOT NULL, `table2_id` INT(11) NOT NULL, PRIMARY KEY (`id`), CONSTRAINT `fk_table2_id` FOREIGN KEY (`table2_id`) REFERENCES `table2` (`id`) ON DELETE CASCADE ON UPDATE CASCADE );
上述代碼中,新加入的約束條件ON DELETE CASCADE和ON UPDATE CASCADE讀作:“如果在主表中刪除規則列,子表也將相應地刪除。如果在主表中更新規則列,子表也將相應地更新。”
在使用外鍵時需要注意,需要創建一個同名的索引,因為這樣可以加快查找和聯接操作的速度。
CREATE INDEX `fk_table2_id` ON `table1` (`table2_id`);
上述代碼中,使用CREATE INDEX語句在table1表中創建了一個名為fk_table2_id的索引,它的字段是table2_id。
上一篇mysql實訓答辯穿搭
下一篇css相對定位時總盒子