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
显示这些键。
让我们借助以下示例代码来理解。
#createanemployeetableCREATETABLEemployee(IDINTPRIMARYKEYNOTNULL,#thisisPRIKeyFIRST_NAMEVARCHAR(60)NOTNULL,LAST_NAMEVARCHAR(60)NOTNULL,GENDERVARCHAR(60)NOTNULL,INDEX(GENDER),#thisisMULKeyCOUNTRY_CODEVARCHAR(30),INDEX(COUNTRY_CODE),#thisisMULKeyCITIZEN_IDINTUNIQUEKEY#thisisUNIKey);#insertsomedataINSERTINTOemployee(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);#usethefollowingquerytodescribetablecolumnsandtheirpropertiesdescemployee;
输出:
请参阅上面的示例代码并观察输出以了解。需要注意的是,表中只能有一个 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
键,具体取决于项目要求。