📅  最后修改于: 2023-12-03 15:35:06.033000             🧑  作者: Mango
在数据库设计中,一个表可以有一个或多个列作为该表的键,用于确定表中每一行记录的唯一性。当一个键由多个列组成时,这种键被称为复合键。SQL 中使用 PRIMARY KEY
或 UNIQUE
约束来定义复合键。
使用 PRIMARY KEY
约束可以在创建表时定义复合键:
CREATE TABLE students(
id INT,
name VARCHAR(50),
course VARCHAR(50),
grade INT,
PRIMARY KEY (id, course)
);
students
表的复合键由 id
和 course
两个列组成。
也可以使用 ALTER TABLE
语句来添加复合键:
ALTER TABLE students
ADD CONSTRAINT pk_students PRIMARY KEY (id, course);
查询复合键可以使用多个列的值:
SELECT * FROM students WHERE id = 123 AND course = 'Math';
也可以只查询其中一个键的值:
SELECT * FROM students WHERE id = 123;
修改复合键可以使用 ALTER TABLE
语句:
ALTER TABLE students
DROP CONSTRAINT pk_students;
ALTER TABLE students
ADD CONSTRAINT pk_students PRIMARY KEY (id, grade);
复合键的优点是可以确保表中每一行记录的唯一性,避免重复数据。缺点是使用复合键可能会使查询变慢,因为在查询时需要同时比较多个列的值。另外,使用过多的复合键可能会使数据库设计变得复杂。因此,在设计数据库时要根据具体情况来决定是否需要使用复合键。