在MySQL中,两列主键通常是指一个表中有两个字段共同作为主键,这种结构被称为复合主键(Composite Key)。复合主键可以用来确保表中每一行数据的唯一性,尤其是当单个字段无法唯一标识一行数据时。
CREATE TABLE example_table (
column1 INT NOT NULL,
column2 INT NOT NULL,
other_column VARCHAR(255),
PRIMARY KEY (column1, column2)
);在这个例子中,column1 和 column2 两列共同构成了表的主键。
ALTER TABLE example_table
ADD PRIMARY KEY (column1, column2);这要求column1 和 column2 都不能有空值(NULL),因为主键列不允许为空。
复合主键是由两个或多个列组成的,这些列可以是任何数据类型,只要它们能够唯一标识一行数据。
复合主键常用于以下场景:
-- 创建一个包含复合主键的表
CREATE TABLE students_courses (
student_id INT NOT NULL,
course_id INT NOT NULL,
grade CHAR(1),
PRIMARY KEY (student_id, course_id)
);
-- 插入数据
INSERT INTO students_courses (student_id, course_id, grade) VALUES (1, 101, 'A');
INSERT INTO students_courses (student_id, course_id, grade) VALUES (1, 102, 'B');
-- 尝试插入重复数据(会失败)
INSERT INTO students_courses (student_id, course_id, grade) VALUES (1, 101, 'C');在这个例子中,student_id 和 course_id 共同构成了复合主键,确保了每个学生对每门课程的成绩记录是唯一的。
请注意,以上信息基于MySQL数据库的一般知识,具体实现可能会根据数据库版本和配置有所不同。