MySQL中的组合主码(Composite Primary Key)是指由两个或多个字段共同组成的主键。主键是表中的一个或多个字段,其值能唯一地标识表中的每一行记录。组合主码用于确保表中的每一行都能通过这些字段的组合被唯一标识。
组合主码通常由两个或多个字段组成,这些字段可以是任何数据类型,如整数、字符串等。
组合主码适用于以下场景:
假设我们有一个学生选课表 student_course
,其中包含学生ID (student_id
) 和课程ID (course_id
),这两个字段的组合可以唯一标识一条记录。
CREATE TABLE student_course (
student_id INT NOT NULL,
course_id INT NOT NULL,
PRIMARY KEY (student_id, course_id)
);
student_id
或 course_id
作为主键?原因:因为一个学生可以选多门课程,一门课程也可以被多个学生选,所以单独使用 student_id
或 course_id
无法唯一标识一条记录。
解决方法:使用组合主键,将 student_id
和 course_id
组合起来作为主键。
CREATE TABLE student_course (
student_id INT NOT NULL,
course_id INT NOT NULL,
PRIMARY KEY (student_id, course_id)
);
解决方法:在插入数据时,确保 student_id
和 course_id
的组合是唯一的。
INSERT INTO student_course (student_id, course_id) VALUES (1, 101);
INSERT INTO student_course (student_id, course_id) VALUES (2, 101);
-- 以下插入会失败,因为 (1, 101) 已经存在
INSERT INTO student_course (student_id, course_id) VALUES (1, 101);
通过以上内容,你应该对MySQL中的组合主码有了全面的了解,包括其基础概念、优势、类型、应用场景以及常见问题的解决方法。
领取专属 10元无门槛券
手把手带您无忧上云