📜  sql 复合键 - SQL (1)

📅  最后修改于: 2023-12-03 15:35:06.033000             🧑  作者: Mango

SQL 复合键

在数据库设计中,一个表可以有一个或多个列作为该表的键,用于确定表中每一行记录的唯一性。当一个键由多个列组成时,这种键被称为复合键。SQL 中使用 PRIMARY KEYUNIQUE 约束来定义复合键。

创建复合键

使用 PRIMARY KEY 约束可以在创建表时定义复合键:

CREATE TABLE students(
  id INT,
  name VARCHAR(50),
  course VARCHAR(50),
  grade INT,
  PRIMARY KEY (id, course)
);

students 表的复合键由 idcourse 两个列组成。

也可以使用 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);
复合键的优缺点

复合键的优点是可以确保表中每一行记录的唯一性,避免重复数据。缺点是使用复合键可能会使查询变慢,因为在查询时需要同时比较多个列的值。另外,使用过多的复合键可能会使数据库设计变得复杂。因此,在设计数据库时要根据具体情况来决定是否需要使用复合键。