Maison >base de données >tutoriel mysql >Comment ajouter un index unique dans MySQL

Comment ajouter un index unique dans MySQL

青灯夜游
青灯夜游original
2022-06-20 18:50:0221168parcourir

Trois façons d'ajouter : 1. Utilisez l'instruction "CREATE INDEX" pour ajouter, la syntaxe est "CREATE UNIQUE INDEX nom d'index SUR le nom de la table (liste des noms de colonnes) ;" 2. Ajoutez lors de la création d'une table, la syntaxe est "CREATE TABLE nom de table (. .. UNIQUE KEY (liste de noms de colonnes));"; 3. Ajouté lors de la modification de la table, la syntaxe "ALTER TABLE nom de table ADD CONSTRAINT nom d'index UNIQUE KEY (liste de noms de colonnes);".

Comment ajouter un index unique dans MySQL

L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.

index unique mysql (UNIQUE)

Pour imposer des valeurs uniques pour une ou plusieurs colonnes, une contrainte PRIMARY KEY est généralement utilisée. Cependant, chaque table ne peut avoir qu’une seule clé primaire. Par conséquent, vous ne pouvez pas utiliser de contraintes de clé primaire si vous souhaitez inclure plusieurs colonnes ou un ensemble de colonnes avec des valeurs uniques.

Heureusement, MySQL fournit un autre index appelé index UNIQUE qui vous permet d'imposer des valeurs pour qu'elles soient uniques à une ou plusieurs colonnes. Contrairement aux index PRIMARY KEY, UNIQUE peut avoir plusieurs index par table.

Pour créer un index UNIQUE, utilisez le <span style="background-color: rgb(255, 255, 255); color: rgb(68, 68, 68); font-family: " helvetica neue microsoft yahei arial sans-serif>CREATE INDEX<code><span style="background-color: rgb(255, 255, 255); color: rgb(68, 68, 68); font-family: " helvetica neue yahei arial sans-serif>CREATE INDEX</span>Déclaration :

CREATE UNIQUE INDEX 索引名
ON 表名(列名1,列名2,...);

Une autre façon d'imposer l'unicité des valeurs dans une ou plusieurs colonnes consiste à utiliser UNIQUE contraintes.

Lorsque vous créez une contrainte UNIQUE, MySQL créera UNIQUE l'index en arrière-plan.

Les déclarations suivantes illustrent comment créer une contrainte unique lors de la création d'une table.

CREATE TABLE 表名(
...
   UNIQUE KEY(列名1,列名2,...) 
);

Vous pouvez également ajouter un index unique (UNIQUE) à une table existante à l'aide de l'instruction ALTER TABLE

ALTER TABLE 表名
ADD CONSTRAINT 索引名 UNIQUE KEY(列名1,列名2,...);

Exemple d'index MySQL UNIQUE

Supposons que vous souhaitiez gérer les contacts dans votre application. Vous souhaitez également que l'e-mail de chaque contact du tableau des contacts soit unique.

Pour appliquer cette règle, créez une contrainte unique dans l'instruction CREATE TABLE comme suit :

CREATE TABLE IF NOT EXISTS contacts (
    id INT AUTO_INCREMENT PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    phone VARCHAR(15) NOT NULL,
    email VARCHAR(100) NOT NULL,
    UNIQUE KEY unique_email (email)
);

Comment ajouter un index unique dans MySQL

Si vous utilisez l'instruction SHOW INDEXES, vous verrez que MySQL UNIQUE crée un index pour la colonne email.

SHOW INDEXES FROM contacts;

Comment ajouter un index unique dans MySQL

Insérons une ligne dans le tableau des contacts.

INSERT INTO contacts(first_name,last_name,phone,email)
VALUES(&#39;John&#39;,&#39;Doe&#39;,&#39;(408)-999-9765&#39;,&#39;john.doe@mysqltutorial.org&#39;);

Comment ajouter un index unique dans MySQL

Maintenant, si vous essayez d'insérer la ligne où leur e-mail est john.doe@mysqltutorial.org, vous recevrez un message d'erreur.

INSERT INTO contacts(first_name,last_name,phone,email)
VALUES(&#39;Johny&#39;,&#39;Doe&#39;,&#39;(408)-999-4321&#39;,&#39;john.doe@mysqltutorial.org&#39;);
ERROR 1062 (23000): Duplicate entry &#39;john.doe@mysqltutorial.org&#39; for key &#39;unique_email&#39;

Comment ajouter un index unique dans MySQL

En supposant que vous souhaitiez que la combinaison du prénom, du nom et du téléphone soit également unique parmi les contacts. Dans ce cas, vous pouvez créer des index pour ces colonnes à l'aide de l'instruction CREATE INDEX UNIQUE comme suit :

CREATE UNIQUE INDEX idx_name_phone
ON contacts(first_name,last_name,phone);

Ajoutez la ligne suivante aux contacts car la combinaison des tables provoquera une erreur prénom, nom et téléphone existent déjà.

INSERT INTO contacts(first_name,last_name,phone,email)
VALUES(&#39;john&#39;,&#39;doe&#39;,&#39;(408)-999-9765&#39;,&#39;john.d@mysqltutorial.org&#39;);
rrree

【Recommandations associées : tutoriel vidéo mysql

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn