MySQL中外鍵是指一張表的字段與另一張表的主鍵或唯一鍵建立起的聯系。通過外鍵可以實現兩張表之間的數據關聯和數據完整性的維護。當然,建立外鍵需要滿足一些條件,其中之一就是要保證表之間的關系是一對多或一對一的。MySQL中可以通過在創建表的時候增加外鍵來實現表與表之間的關聯。
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `age` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE `order` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL COMMENT '用戶id', `order_number` varchar(20) NOT NULL COMMENT '訂單號', PRIMARY KEY (`id`), KEY `fk_user_id` (`user_id`), CONSTRAINT `fk_user_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
以上代碼展示了如何在兩張表之間建立外鍵。在訂單表中,增加了一個user_id字段,然后定義了一個外鍵,指向user表的id主鍵。這樣當我們往訂單表中插入數據的時候,只能插入已經存在于用戶表中的用戶id。如果想要插入不存在于用戶表中的用戶id,會提示外鍵約束錯誤,從而保證了數據的完整性。
需要注意的是,為了能夠使用外鍵約束,必須要使用InnoDB存儲引擎。外鍵約束可以保證數據庫的數據完整性和一致性,但是也會造成一定的性能損失,所以需要根據具體情況來決定是否使用外鍵約束。