MySQL主外鍵關(guān)聯(lián)是指在兩個(gè)或多個(gè)數(shù)據(jù)庫(kù)表中建立關(guān)系,并使之互相連接,通過主鍵和外鍵聯(lián)系起來。主鍵可用于在單個(gè)表中唯一標(biāo)識(shí)每個(gè)記錄,而外鍵用于從另一個(gè)表中引用記錄。
-- 創(chuàng)建用戶表 CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, `email` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4; -- 創(chuàng)建訂單表 CREATE TABLE `order` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) DEFAULT NULL, `total_price` decimal(10,2) DEFAULT NULL, PRIMARY KEY (`id`), KEY `user_id` (`user_id`), CONSTRAINT `fk_order_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
在以上代碼中,我們創(chuàng)建了兩個(gè)表:user和order。在user表中,我們?cè)O(shè)置了一個(gè)主鍵id,該字段用于唯一標(biāo)識(shí)每個(gè)用戶。在order表中,我們?cè)O(shè)置了一個(gè)外鍵user_id,該字段用于引用user表中的id字段。我們還創(chuàng)建了一個(gè)名稱為fk_order_user的外鍵約束,用于確保order表中的user_id字段始終引用user表中存在的記錄。
這個(gè)關(guān)系的好處是,當(dāng)我們需要獲取某個(gè)訂單的用戶信息時(shí),我們可以通過外鍵user_id在user表中查詢用戶信息,而不需要額外地查詢。而且,當(dāng)用戶在user表中刪除時(shí),用戶所擁有的訂單也會(huì)被自動(dòng)刪除。