SQL Server 复合键

2025年3月17日 | 阅读 3 分钟

SQL Server 中的复合键是多个列的组合。它用于唯一标识表行。 SQL Server 仅在列组合时保证列的唯一性,如果单独使用这些列,则无法保持唯一性。当键(例如主键、超键或候选键)具有多个列时,它被称为复合键。我们可以在复合键列中使用不同的数据类型,因为在 SQL Server 中创建复合键不需要相同的数据类型。

复合键的语法如下:

什么时候会出现复合键?

并非总是在表中有一个可以用作主键的唯一列。在这种情况下,我们组合两个或多个表列,使它们唯一,并将其用作表的主键。列或属性的这种组合称为复合键。

SQL Server 允许我们通过两种方式创建复合键:

  1. 使用 CREATE 语句
  2. 使用 ALTER 语句

使用 CREATE 语句创建复合键

SQL Server CREATE 语句定义一个表。 这意味着我们可以在创建表时定义复合键。 以下语句将创建一个名为 Product 的表:

我们看到该语句创建了一个复合主键,其中包含 NameManufacturer 列。 现在,我们将一些记录插入到此表中,如下所示:

使用 SELECT 语句验证表会显示以下输出:

SQL Server Composite Key

让我们再插入两条记录,看看结果。

执行上述语句将返回以下输出:

SQL Server Composite Key

我们可以在输出中看到,如果我们尝试添加一个产品名称和一个制造商,而它们是相同的,它将生成一个错误,提示“我们无法在对象 dbo.Product 中输入重复键”。

当我们运行第二个 insert 命令时,它将成功添加到表中。 这是因为我们可以在产品列中放入任意数量的鼠标,但制造商列必须是唯一的。

因此,我们可以得出结论,复合键始终确保具有两个键的表列的唯一性。

使用 ALTER 语句创建复合键

ALTER 语句始终用于更改现有表。 为了使用多个属性唯一标识数据库的每个记录,有时需要复合键。 在这种情况下,使用 ALTER TABLE 语句。

语法如下

让我们通过一个例子来理解它。 首先,我们将使用以下语句创建一个表“student”:

现在,我们意识到此表需要复合键。 以下语句将在创建表后添加复合键:

以上语句将在表中成功添加复合键 ck_student

如何删除现有的复合键?

SQL Server 还允许我们从表中删除复合键。 我们可以使用 ALTER 语句来执行此操作。 语法如下:

假设我们要从 Product 表中删除 ck_product 复合键。 我们可以编写如下查询:

执行该语句将从 Product 表中删除复合键“ck_product”。


下一个主题SQL Server 唯一键