MySQL中的联合主键(Composite Primary Key)是指由两个或多个字段组成的主键,用于唯一标识表中的每一行数据。联合主键中的每个字段都不能为NULL,并且联合主键的组合必须是唯一的。
联合主键是由多个字段组成的,每个字段可以是不同的数据类型。例如:
CREATE TABLE students (
student_id INT,
course_id INT,
grade FLOAT,
PRIMARY KEY (student_id, course_id)
);
在这个例子中,student_id
和course_id
组成了联合主键。
联合主键常用于以下场景:
原因:联合主键会创建一个复合索引,当查询条件只涉及联合主键中的部分字段时,索引的效率可能不如单字段索引。
解决方法:
CREATE INDEX idx_student_id ON students(student_id);
原因:联合主键中的字段一旦创建,通常不建议修改,因为这可能会破坏数据的唯一性和完整性。
解决方法:
DROP TABLE students;
CREATE TABLE students (
student_id INT,
course_id INT,
grade FLOAT,
PRIMARY KEY (student_id, course_id)
);
-- 创建一个包含联合主键的表
CREATE TABLE students (
student_id INT,
course_id INT,
grade FLOAT,
PRIMARY KEY (student_id, course_id)
);
-- 插入数据
INSERT INTO students (student_id, course_id, grade) VALUES (1, 101, 85.5);
INSERT INTO students (student_id, course_id, grade) VALUES (1, 102, 90.0);
INSERT INTO students (student_id, course_id, grade) VALUES (2, 101, 78.5);
-- 查询数据
SELECT * FROM students WHERE student_id = 1 AND course_id = 101;
希望这些信息对你有所帮助!如果有更多问题,欢迎继续提问。
领取专属 10元无门槛券
手把手带您无忧上云