MySQL MariaDB

MySQL Insérer Ignorer la clé en double

MySQL Insérer Ignorer la clé en double
Il y a souvent des données contradictoires dans les tableaux ou les ensembles de résultats. La correction prend également beaucoup de temps et les enregistrements répétés doivent souvent être évités. Il est nécessaire d'identifier les enregistrements en double et de les supprimer de l'une ou l'autre des tables. Cette section expliquera comment éviter que des données en double n'apparaissent dans un tableau et comment éliminer les enregistrements en double actuels. Dans ce guide, vous apprendrez à utiliser la clause INSERT IGNORE pour éviter l'erreur.

Syntaxe:

Voici la syntaxe de la requête INSERT IGNORE.

>> INSERT IGNORE INTO table_name(col1, col2, col3) VALUES (value_list), (value_list), (value_list);

INSÉRER IGNORE via Workbench :

Ouvrez votre MySQL Workbench 8.0 de votre système et connectez-le à l'instance de base de données.

Dans la zone de commande, vous devez créer une table « Employé » avec quatre colonnes où l'une d'entre elles doit être spécifiée comme « UNIQUE ». Essayez la requête ci-dessous dans la zone de requête du navigateur pour créer cette table. Sélectionnez l'ensemble de la requête et cliquez sur le signe flash pour l'exécuter.

>> CREATE TABLE Employé (ID int PRIMARY KEY NOT NULL, Name varchar (50) NOT NULL, Age Varchar (50), Salary varchar (50), UNIQUE (ID));

Lors de la création, vous pouvez trouver la table « employé » dans la liste sous l'option « Tables » sous la base de données « données ».

Dans la vue grille, vous pouvez saisir les enregistrements sans saisir de requête. Alors, ouvrez la vue en grille de la table « employé » et ajoutez-y des enregistrements comme indiqué ci-dessous. Nous avons entré tous les enregistrements uniques sans aucun doublon. Appuyez sur le bouton « Appliquer » pour appliquer les modifications.

Une nouvelle fenêtre s'ouvrira avec les requêtes pertinentes liées aux enregistrements que nous avons saisis ci-dessus. Cet écran peut être appelé écran « Révision ». Si vous voulez changer quelque chose, vous pouvez le faire ici. Sinon, appuyez sur le bouton Appliquer pour exécuter les requêtes.

Comme vous pouvez le voir, la requête a été exécutée avec succès et les enregistrements sont enregistrés dans la base de données et sa table « Employé ». Cela aurait généré une erreur si nous avions ajouté une valeur en double dans la colonne « ID ». Appuyez sur le bouton « Terminer ».

C'était tout à propos de la vue de la grille. Maintenant, nous allons insérer des enregistrements via la zone de requête. Pendant ce temps, nous avons inséré des enregistrements en double cette fois pour vérifier la sortie. Nous avons donc essayé la requête "INSERT" ci-dessous, où nous avons deux listes de valeurs. Les deux listes de valeurs ont la même valeur dans la colonne 'ID'. Sélectionnez la requête et appuyez sur le signe flash pour exécuter la requête.

La requête ne fonctionnera pas correctement et générera une erreur en raison des valeurs dupliquées dans la commande INSERT telles qu'elles sont affichées dans l'image.

Essayez maintenant la même requête ci-dessus avec la clause INSERT IGNORE et exécutez-la comme présenté.

Vous pouvez voir qu'il ne génère pas d'erreur dans la zone de sortie, mais il avertit que la commande contient des valeurs en double.

Actualiser la vue en grille du tableau « Employé ». La requête INSERT IGNORE a fonctionné à moitié. Il a inséré la première liste de valeurs dans le tableau, mais la deuxième liste de valeurs a été ignorée en raison de la valeur répétée « 13 ».

INSÉRER IGNORE via le shell de ligne de commande :

Pour comprendre ce concept, ouvrons le shell client de ligne de commande MySQL dans votre système. Sur demande, tapez votre mot de passe MySQL pour commencer à travailler dessus.

Il est maintenant temps de créer une table. Essayez la commande ci-dessous pour le faire. Nous avons créé une table nommée 'minister' alors qu'une de ses colonnes a une contrainte UNIQUE. Il est clair que la colonne "ID" n'acceptera que les valeurs uniques et non les valeurs en double.

>> CRÉER des données de TABLE.minister( Mid INT PRIMARY KEY UNIQUE NOT NULL, Name VARCHAR(45), City VARCHAR(45));

La requête fonctionne correctement et la table a été créée. Pour comprendre la clause INSERT IGNORE, vous devez d'abord voir le fonctionnement de la simple commande INSERT. Si vous utilisez la commande INSERT pour insérer plusieurs données d'information dans une table, MySQL suspend la transaction et génère une exception si une erreur se produit tout au long du traitement. Par conséquent, aucune ligne n'est ajoutée au tableau. Insérons le premier enregistrement dans la table « ministre » en utilisant la requête ci-dessous. La requête fonctionnera avec succès car la table est actuellement vide et il n'y a pas d'enregistrement à homologuer avec.

Comme la colonne "ID" est UNIQUE, lorsque nous essayons l'instruction ci-dessous sur le shell de ligne de commande, cela générera une erreur. C'est parce que nous avons ajouté la valeur "11" dans la requête précédente, et en raison de la clé UNIQUE, cela ne nous permet pas d'ajouter à nouveau la valeur répétée.

Par conséquent, en vérifiant la table, nous pouvons voir que la table n'a qu'un seul enregistrement ajouté par la première requête INSERT.

>> SÉLECTIONNER * À PARTIR des données.ministre;

Inversement, si vous utilisez la clause INSERT IGNORE, les lignes de données incorrectes qui déclenchent l'erreur seront ignorées et n'entreront que les lignes exactes. Dans la commande ci-dessous, nous avons utilisé la commande INSERT IGNORE pour éviter d'ajouter des valeurs répétées dans le tableau et ignorer l'erreur. Comme vous pouvez le voir, la première liste de valeurs a une valeur en double "11" comme dans la requête précédente. Bien que la deuxième liste de valeurs soit unique, elle affichera 1 enregistrement inséré dans le tableau, qui est la deuxième liste de valeurs. MySQL indique également qu'un seul enregistrement a été inséré et qu'un avertissement est généré dans le message. Vous pouvez alors supposer que si nous utilisons la clause INSERT IGNORE, MySQL fournit un avertissement.

Comme vous pouvez le voir sur la sortie ci-dessous, nous n'avons que deux enregistrements dans cette table - la première liste de valeurs fournie dans la requête ci-dessus, qui est négligée.

>> SÉLECTIONNER * À PARTIR des données.ministre;

Conclusion:

Nous avons fait tous les exemples nécessaires d'INSERT IGNORE sur les valeurs en double via MySQL Workbench et le shell client en ligne de commande MySQL.

Tutoriel OpenTTD
OpenTTD est l'un des jeux de simulation d'entreprise les plus populaires. Dans ce jeu, vous devez créer une merveilleuse entreprise de transport. Cepe...
SuperTuxKart pour Linux
SuperTuxKart est un excellent titre conçu pour vous apporter l'expérience Mario Kart gratuitement sur votre système Linux. C'est assez stimulant et am...
Tutoriel Bataille pour Wesnoth
The Battle for Wesnoth est l'un des jeux de stratégie open source les plus populaires auxquels vous pouvez jouer en ce moment. Non seulement ce jeu es...