MySQL 中的 MUL vs PRI vs UNI
本教程将教授 MySQL 中的 PRI
、MUL
和 UNI
键。
通过在本教程中逐步进行,我们将了解 PRI
、MUL
和 UNI
键之间的基本区别以及如何使用它们。我们还将使用示例代码在表格中看到它们的效果。
MySQL 中的键
键是一个属性,有时是一组属性,用于唯一标识表中的一行。
MySQL 中使用各种键用于各种目的,包括主键、唯一键、复合键、外键、超级键、备用键和候选键。
我们将重点介绍本文的主键、唯一键和多键。
MySQL 中的 PRI
、UNI
和 MUL
键
PRI
表示主键,强制表中记录的唯一性。它不允许 NULL
值。
单列或多列可以用作主键。UNI
键表示唯一键,强制表(关系)中的行(记录)的唯一性,如主键,并具有 NULL
值。
一列或多列可用于生成唯一键。
MUL
键不是它们,这意味着 MUL
键是一个既不是主键也不是唯一键的索引。它允许 NULL
值,并且与其名称 MUL
相同的值的多次出现源自多个。
如果你在同一列上应用了多个键,则会根据它们的优先级、PRI
、UNI
和 MUL
显示这些键。
让我们借助以下示例代码来理解。
#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;
输出:
请参阅上面的示例代码并观察输出以了解。需要注意的是,表中只能有一个 PRI
键,但可以有多个 UNI
和 MUL
键。
在上面的输出中,我们在 ID
列上应用了一个 PRI
键,它不允许 NULL
值。这意味着,如果将一个 ID
分配给员工,则不会将同一 ID
分配给表中的任何其他人。
我们在 CITIZEN_ID
列上应用了一个 UNI
键;它强制唯一性并允许 NULL
值。我们可以在名为 GENDER
和 COUNTRY_CODE
的两个不同列上看到两个 MUL
键。
有必要认为 MUL
键在 GENDER
列不能具有 NULL
值但 COUNTRY_CODE
可以的两个列上都可以正常工作。这就是为什么我们说 MUL
既不是 PRI
也不是 UNI
键的原因。
结论
在上面的讨论中,我们得出结论,键是应用于列的属性,以在表中唯一地标识它们。
不同的键用于不同的要求。PRI
适用于你不想在列中重复值并且不允许 NULL
值的情况。
UNI
键关注列内的唯一性,但允许 NULL
值。MUL
既不是 PRI
也不是 UNI
,并且可以接受 NULL
和 NOT NULL
值。
只能有一个 PRI
键,但你可以有多个 UNI
和 MUL
键,具体取决于项目要求。