MySQL 中的 MUL vs PRI vs UNI

Mehvish Ashiq 2023年1月30日
  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
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