MySQL 中的 MUL vs PRI vs UNI

Mehvish Ashiq 2023年1月30日 2022年5月13日
  1. MySQL 中的键
  2. 结论
MySQL 中的 MUL vs PRI vs UNI

本教程将教授 MySQL 中的 PRIMULUNI 键。

通过在本教程中逐步进行,我们将了解 PRIMULUNI 键之间的基本区别以及如何使用它们。我们还将使用示例代码在表格中看到它们的效果。

MySQL 中的键

键是一个属性,有时是一组属性,用于唯一标识表中的一行。

MySQL 中使用各种用于各种目的,包括主键、唯一键、复合键、外键、超级键、备用键和候选键。

我们将重点介绍本文的主键、唯一键和多键。

MySQL 中的 PRIUNIMUL

PRI 表示主,强制表中记录的唯一性。它不允许 NULL 值。

单列或多列可以用作主键。UNI 键表示唯一键,强制表(关系)中的行(记录)的唯一性,如主键,并具有 NULL 值。

一列或多列可用于生成唯一键。

MUL 键不是它们,这意味着 MUL 键是一个既不是主键也不是唯一键的索引。它允许 NULL 值,并且与其名称 MUL 相同的值的多次出现源自多个。

如果你在同一列上应用了多个键,则会根据它们的优先级、PRIUNIMUL 显示这些键。

让我们借助以下示例代码来理解。

#create an employee table
CREATE TABLE employee(
    ID INT PRIMARY KEY NOT NULL, #this is PRI Key
    FIRST_NAME VARCHAR(60) NOT NULL, 
    LAST_NAME VARCHAR(60) NOT NULL,
    GENDER VARCHAR(60) NOT NULL, INDEX(GENDER), #this is MUL Key
    COUNTRY_CODE VARCHAR(30), INDEX(COUNTRY_CODE), #this is MUL Key
    CITIZEN_ID INT UNIQUE KEY #this is UNI Key
);

#insert some data
INSERT INTO employee(ID, FIRST_NAME, LAST_NAME,GENDER, COUNTRY_CODE,CITIZEN_ID)
VALUES
(1,'Thomas', 'Christopher','Male','+61',485),
(2,'Lisa', 'Mark', 'Female','+59',408),
(3,'Anthony', 'Richard', 'Male','+61',215),
(4,'Matthew', 'Charles', 'Male',NULL, 610),
(5,'Kiren', 'Donald','Female','+31', null);

#use the following query to describe table columns and their properties
desc employee;

输出:

mysql 中的 mul vs pri vs uni - 表

请参阅上面的示例代码并观察输出以了解。需要注意的是,表中只能有一个 PRI 键,但可以有多个 UNIMUL 键。

在上面的输出中,我们在 ID 列上应用了一个 PRI 键,它不允许 NULL 值。这意味着,如果将一个 ID 分配给员工,则不会将同一 ID 分配给表中的任何其他人。

我们在 CITIZEN_ID 列上应用了一个 UNI 键;它强制唯一性并允许 NULL 值。我们可以在名为 GENDERCOUNTRY_CODE 的两个不同列上看到两个 MUL 键。

有必要认为 MUL 键在 GENDER 列不能具有 NULL 值但 COUNTRY_CODE 可以的两个列上都可以正常工作。这就是为什么我们说 MUL 既不是 PRI 也不是 UNI 键的原因。

结论

在上面的讨论中,我们得出结论,键是应用于列的属性,以在表中唯一地标识它们。

不同的键用于不同的要求。PRI 适用于你不想在列中重复值并且不允许 NULL 值的情况。

UNI 键关注列内的唯一性,但允许 NULL 值。MUL 既不是 PRI 也不是 UNI,并且可以接受 NULLNOT NULL 值。

只能有一个 PRI 键,但你可以有多个 UNIMUL 键,具体取决于项目要求。

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook