Une clé unique dans MySQL est un champ unique ou une combinaison de champs qui garantit que toutes les valeurs stockées dans la colonne seront uniques. Cela signifie qu'une colonne ne peut pas stocker valeurs en double . Par exemple, les adresses e-mail et les numéros de matricule des étudiants dans la table « student_info » ou les numéros de contact des employés dans la table « Employé » doivent être uniques.
tutoriel SS
MySQL nous permet d'utiliser plus d'une colonne avec une contrainte UNIQUE dans une table. Il peut accepter un nul valeur, mais MySQL n'autorisait qu'une seule valeur nulle par colonne. Il assure la intégrité de la colonne ou du groupe de colonnes pour stocker différentes valeurs dans un tableau.
Besoins d'une clé unique
- Ceci est utile pour empêcher les deux enregistrements de stocker des valeurs identiques dans la colonne.
- Il stocke uniquement des valeurs distinctes qui maintiennent l'intégrité et la fiabilité de la base de données pour accéder aux informations de manière organisée.
- Il fonctionne également avec une clé étrangère pour préserver le caractère unique d'une table.
- Il peut contenir une valeur nulle dans le tableau.
Syntaxe
La syntaxe suivante est utilisée pour créer une clé unique dans MySQL .
Si nous souhaitons créer une seule colonne clé unique dans une table, utilisez la syntaxe ci-dessous :
CREATE TABLE table_name( col1 datatype, col2 datatype UNIQUE, ... );
Si nous souhaitons créer plusieurs colonnes clés uniques dans une table, utilisez la syntaxe ci-dessous :
CREATE TABLE table_name( col1 col_definition, col2 col_definition, ... [CONSTRAINT constraint_name] UNIQUE(column_name(s)) );
Si nous n'avons pas spécifié le nom d'une contrainte unique, MySQL génère automatiquement un nom pour cette colonne. Il est donc recommandé d'utiliser le nom de la contrainte lors de la création d'une table.
Paramètre Explication
Le tableau suivant explique les paramètres en détail.
Le nom du paramètre | Descriptions |
---|---|
nom de la table | C'est le nom de la table que nous allons créer. |
col1, col2 | Ce sont les noms de colonnes que contient le tableau. |
nom_contrainte | C'est le nom de la clé unique. |
nom_colonne(s) | Ce sont le(s) nom(s) de colonne qui constitueront une clé unique. |
Exemple de clé unique
L'exemple suivant explique comment utiliser une clé unique dans MySQL.
Cette instruction crée un tableau ' Étudiant2 ' avec une contrainte UNIQUE :
CREATE TABLE Student2 ( Stud_ID int NOT NULL UNIQUE, Name varchar(45), Email varchar(45), Age int, City varchar(25) );
Ensuite, exécutez les requêtes d'insertion répertoriées ci-dessous pour comprendre comment cela fonctionne :
mysql> INSERT INTO Student2 (Stud_ID, Name, Email, Age, City) VALUES (1, 'Peter', '[email protected]', 22, 'Texas'), (2, 'Suzi', '[email protected]', 24, 'California'), (3, 'Joseph', '[email protected]', 23, 'Alaska'); mysql> INSERT INTO Student2 (Stud_ID, Name, Email, Age, City) VALUES (1, 'Stephen', '[email protected]', 22, 'Texas');
Sortir
Dans le résultat ci-dessous, nous pouvons voir que le premier requête INSÉRER s'exécute correctement, mais la deuxième instruction échoue et donne une erreur indiquant : Entrée en double « 1 » pour la clé Stud_ID.
Si vous souhaitez définir la clé unique sur plusieurs colonnes , utilisez la requête comme ci-dessous :
CREATE TABLE Student3 ( Stud_ID int, Roll_No int, Name varchar(45) NOT NULL, Email varchar(45), Age int, City varchar(25), CONSTRAINT uc_rollno_email Unique(Roll_No, Email) );
Dans le résultat, nous pouvons voir que la valeur de clé unique contient deux colonnes qui sont Roll_Non et E-mail .
Pour vérifier cela, exécutez l'instruction suivante :
mysql> SHOW INDEX FROM Student3;
Ici, nous pouvons voir que la contrainte unique a été ajoutée avec succès dans le tableau :
DÉPOSER une clé unique
L'instruction ALTER TABLE nous permet également de supprimer la clé unique de la table. La syntaxe suivante est utilisée pour supprimer la clé unique :
ALTER TABLE table_name DROP INDEX constraint_name;
Dans la syntaxe ci-dessus, le nom de la table est le nom de la table que l'on souhaite modifier, et nom_contrainte est le nom de la clé unique que nous allons supprimer.
Exemple
Cette déclaration supprimera le uc_rollno_email contrainte de la table de façon permanente.
mysql> ALTER TABLE Student3 DROP INDEX uc_rollno_email;
Nous pouvons exécuter l'instruction SHOW INDEX pour cela.
Clé unique utilisant l'instruction ALTER TABLE
Cette instruction nous permet de faire la modification dans la table existante. Parfois, nous souhaitons ajouter une clé unique à la colonne d'une table existante ; ensuite, cette instruction est utilisée pour ajouter la clé unique pour cette colonne.
Syntaxe
Voici la syntaxe de l'instruction ALTER TABLE pour ajouter une clé unique :
ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE(column_list);
Exemple
Cette instruction crée un tableau ' Étudiants3 ' qui n'ont pas de colonne clé unique dans la définition de la table.
CREATE TABLE Student3 ( Stud_ID int, Roll_No int, Name varchar(45) NOT NULL, Email varchar(45), Age int, City varchar(25) );
Après avoir créé une table, si nous voulons ajouter une clé unique à cette table, nous devons exécuter l'instruction ALTER TABLE comme ci-dessous :
mysql> ALTER TABLE Student3 ADD CONSTRAINT uc_rollno_email UNIQUE(Roll_No, Email);
Nous pouvons voir le résultat où les deux instructions ont été exécutées avec succès.
Pour vérifier cela, exécutez l'instruction suivante :
mysql> SHOW INDEX FROM Student3;
Ici, nous pouvons voir que la contrainte unique a été ajoutée avec succès dans le tableau :