在 MySQL 中,可以使用外鍵實(shí)現(xiàn)表與表之間的關(guān)聯(lián)。外鍵可以保證表之間的數(shù)據(jù)唯一性和完整性,防止數(shù)據(jù)冗余和錯(cuò)誤。
在創(chuàng)建表時(shí),可以使用 FOREIGN KEY 關(guān)鍵字設(shè)置外鍵關(guān)聯(lián)。例如:
CREATE TABLE `students` ( `id` int(11) NOT NULL, `name` varchar(50) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE `scores` ( `id` int(11) NOT NULL, `subject` varchar(50) DEFAULT NULL, `score` int(11) DEFAULT NULL, `student_id` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `student_id` (`student_id`), CONSTRAINT `scores_student_id_foreign` FOREIGN KEY (`student_id`) REFERENCES `students` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
在以上代碼中,創(chuàng)建了兩個(gè)表:students 和 scores。其中,scores 表的 student_id 字段設(shè)置了外鍵關(guān)聯(lián),關(guān)聯(lián)到了 students 表的 id 字段。
關(guān)于 FOREIGN KEY 關(guān)鍵字的使用說(shuō)明:
- FOREIGN KEY:設(shè)置外鍵關(guān)聯(lián)。
- 字段名:需要設(shè)置外鍵關(guān)聯(lián)的字段。
- REFERENCES 表名(字段名):指定關(guān)聯(lián)的表名和字段名。
需要注意的是,設(shè)置了外鍵關(guān)聯(lián)后,如果要在 scores 表中插入數(shù)據(jù)時(shí),必須先保證關(guān)聯(lián)的 students 表中存在對(duì)應(yīng)的數(shù)據(jù)。否則,會(huì)提示錯(cuò)誤。
設(shè)置外鍵關(guān)聯(lián)可以有效地維護(hù)表與表之間的數(shù)據(jù)完整性,避免數(shù)據(jù)冗余和錯(cuò)誤。