Mysql 简明教程

MySQL - Composite Key

MySQL Composite Key 是由表中两列或更多列组成的键,用于唯一标识记录(同一表行中值的组合)。它还可以描述为在多个列上创建的主键。

对于表中多列上的复合键,这些列的组合可以保证唯一性,即使这些列单独可能无法保证唯一性。因此,当数据库表没有任何列能够单独从表中标识唯一行(或记录)时,我们可能需要两个或更多个字段/列才能从表中获取唯一记录/行。

Creating MySQL Composite Key

要在 MySQL 表中创建复合键,我们在 CREATE TABLE 语句中使用 PRIMARY KEY 关键字在表的两个或更多列上创建主键。复合键必须具有以下特性 -

  1. 复合键可能是外键的一部分,也可能不是外键的一部分。

  2. 复合键不能为空。

  3. 还可以通过组合多个候选键来创建复合键。

  4. 它也称为复合键。

  5. 复合键中的所有属性都是外键。

Syntax

以下是创建表时创建复合键的语法 -

CREATE TABLE table_name(
   column1 datatype, column2 datatype, column3 datatype...,
   CONSTRAINT composite_key_name
   PRIMARY KEY(column_name1, column_name2,..)
);

Example

在以下示例中,我们尝试创建一个名为 CUSTOMERS 的表,并在 ID 和 NAME 列上添加一个复合键,如下所示 -

CREATE TABLE CUSTOMERS (
   ID INT NOT NULL,
   NAME VARCHAR (20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2),
   PRIMARY KEY(ID, NAME)
);

PRIMARY KEY 添加到 CUSTOMERS 表中的 ID 和 NAME 列。插入到这些列中的值的组合必须是唯一的,即使单个列值有重复项。

Verification

要验证是否创建了复合键,让我们使用 DESC 查询显示 CUSTOMERS 表的表定义 -

Dropping MySQL Composite Key

我们可以使用 ALTER TABLE…​DROP 语句删除 MySQL 复合键。

Syntax

以下是删除表中列的复合键的语法 -

ALTER TABLE table_name DROP PRIMARY KEY;

Example

使用以下 SQL 语句,我们可以从表中删除 Composite key 约束:

ALTER TABLE CUSTOMERS DROP PRIMARY KEY;

Verification

要验证是否已删除组合键,我们使用 DESC 关键字显示 CUSTOMERS 表:

Composite Key Using a Client Program

我们还可以对字段应用组合键约束,以使用客户端程序唯一标识。

Syntax

Example

以下是这些程序 −