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 鍵,具體取決於專案要求。
