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