MySQL で MUL と PRI と UNI の比較

Mehvish Ashiq 2023年1月30日
  1. MySQL のキー
  2. まとめ
MySQL で MUL と PRI と UNI の比較

このチュートリアルでは、MySQL の PRIMUL、および UNI キーについて説明します。

このチュートリアルを段階的に実行することで、PRIMUL、および UNI キーの基本的な違いと、それぞれの使用方法を確認できます。また、サンプルコードを使用して、それらの効果を表で確認します。

MySQL のキー

キーは、テーブルから行を一意に識別するために使用される属性または属性のセットです。

MySQL では、主キー、一意キー、複合キー、外部キー、スーパーキー、代替キー、候補キーなど、さまざまなキーがさまざまな目的で使用されます。

この記事では、プライマリキー、一意キー、およびマルチキーに焦点を当てます。

MySQL の PRIUNI、および MUL キー

PRI はプライマリキーを意味し、テーブル内のレコードの一意性を強制します。NULL 値は許可されません。

単一の列または複数の列を主キーとして使用できます。UNI キーは一意キーを表し、主キーのようにテーブル(関係)内の行(レコード)の一意性を強制し、NULL 値を持ちます。

1つまたは複数の列を使用して、一意のキーを作成できます。

MUL キーはそれらのいずれでもありません。つまり、MUL キーは主キーでも一意キーでもないインデックスです。NULL 値を許可し、その名前 MUL と同じ値が複数回出現することを許可します。

同じ列に複数のキーが適用されている場合、キーは優先度、PRIUNI、および 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;

出力:

mysql のテーブルにおける MUL と PRI と UNI の比較

上記のサンプルコードを参照し、出力を観察して理解してください。テーブル内に含めることができる PRI キーは 1つだけですが、UNI キーと MUL キーは複数存在する可能性があることに注意してください。

上記の出力では、ID 列に 1つの PRI キーが適用されていますが、これは NULL 値を許可していません。つまり、1つの ID が従業員に割り当てられている場合、その同じ ID はテーブル内の他のどの ID にも割り当てられません。

CITIZEN_ID 列に 1つの UNI キーが適用されています。一意性を強制し、NULL 値を許可します。GENDERCOUNTRY_CODE という名前の 2つの異なる列に 2つの MUL キーが表示されます。

MUL キーは、GENDER 列が NULL 値を持つことはできないが、COUNTRY_CODE は持つことができる両方の列で正常に機能していると考える必要があります。これが、MULPRI でも UNI キーでもないと言う理由です。

まとめ

上記の説明では、キーは、テーブル内でキーを一意に識別するために列に適用される属性であると結論付けました。

要件ごとに異なるキーが使用されます。PRI は、列内で値を繰り返したくない場合や、NULL 値を許可しない場合に使用します。

UNI キーは列内の一意性に焦点を合わせていますが、NULL 値を許可します。MULPRI でも UNI でもなく、NULLNOT NULL の値を受け入れることができます。

PRI キーは 1つしか存在できませんが、プロジェクトの要件に応じて、複数の UNI および MUL キーを使用できます。

著者: 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