MySQL - Comment insérer une nouvelle ligne uniquement si les données n'existent pas

MySQL - Comment insérer une nouvelle ligne uniquement si les données n'existent pas
MySQL est un célèbre SGBDR open-source pour stocker des données dans les bases de données. L'insertion de données dans les tableaux de votre base de données est une tâche courante. Parfois, les utilisateurs ne veulent pas insérer des données dupliquées pour éliminer la redondance. MySQL permet aux utilisateurs d'insérer des données uniquement si des données similaires n'existent pas déjà.

Ce message discutera de l'insertion d'une nouvelle ligne uniquement si les données n'existent pas déjà dans le tableau MySQL. Avant de commencer ce post, assurez-vous que vous êtes connecté à votre serveur local MySQL et que vous avez choisi une base de données où vous souhaitez travailler.

Insérez une nouvelle ligne uniquement si les données n'existent pas en utilisant l'instruction «Insérer Ignore»

Eh bien, la réponse à la question du titre est assez simple et simple. Utilisez simplement le «INSÉRER»Mot-clé avec le«IGNORER" Mot-clé. Cela s'assurera que les nouvelles données ou la requête d'insert ne sont exécutées que lorsqu'aucune entrée précédente des données n'est trouvée dans MySQL. Pour obtenir un bref aperçu de cela, jetez un œil à la syntaxe suivante:

INSERT IGNORE IN [TABLE-NAME] ([Column1-name], [Column2-name], [Column3-name]) VALEUR ([Value1], [Value2], [Value3]);

Voyons un exemple si l'utilisateur souhaite saisir une valeur de ligne "1","John" et "Biche" dans le "Client"Table pour les colonnes"Identifiant,""Prénom" et "Nom de famille" respectivement. Exécutez cette requête pour insérer ces valeurs si aucune ligne n'ayant déjà ces valeurs n'existe:

Sélectionner * chez le client;
Insérer Ignore dans le client (id, firstName, LastName) valeurs (1, «John», «Doe»);

La sortie contient deux tables affichant des données du tableau avant et après l'exécution de la requête. Vous pouvez remarquer que rien ne change dans la table car la ligne existait déjà, donc MySQL a ignoré avec succès le processus d'insertion sans afficher l'erreur:

Insérez une nouvelle ligne uniquement si les données n'existent pas en utilisant la clause «où ne pas existe»

Dans MySQL, le « Ne pas exister«La clause empêche l'insertion des lignes si elles existent déjà dans le tableau lorsqu'elle est utilisée dans le«INSÉRER DANS»Déclaration avec une sous-requête pour définir une condition. Lorsque cette clause est utilisée avec la sous-requête "(Select * from [Table-Name] [Column-Name] = [Expression]);”Vérifie si une ligne existe dans le tableau qui remplit la condition. Si une ligne existe, le «Où il n'y a pas«La clause renvoie une fausse valeur, et le«SÉLECTIONNER»La déclaration ne renvoie aucune ligne. En conséquence, la ligne ne sera pas insérée dans la table. La syntaxe est fournie ci-dessous:

Insérer dans [Table-Name] ([Column1-name], [Column2-name], [Column3-name])
SELECT [Value1], [Value2], [Value3]
Où ne pas existe (sélectionner * dans [Table-Name] [Column-Name] = [Expression]);

Voyons un exemple si l'utilisateur souhaite insérer une ligne dans le tableau des employés contenant des valeurs «1","Américains" et "Henriot"Dans les colonnes"identifiant","Nom de l'entreprise" et "Nom du contact" respectivement. Mais seulement si une ligne avec un identifiant de «1«On ne trouve pas dans le tableau ou il n'existe pas. Dans ce cas particulier, la requête deviendra:

Sélectionner * à partir de l'employé;
Insérer dans l'employé (ID, CompanyName, ContactName)
Sélectionnez 1, «Americanas», «Henriot»
Où il n'y a pas (sélectionner * parmi l'employé où id = 1);

La sortie affiche une nouvelle ligne qui n'est pas insérée comme la ligne avec le «identifiant" égal à "1"Déjà existé.

Insérez une nouvelle ligne uniquement si les données n'existent pas en utilisant la clause «On Duplicate Key Update»

Eh bien, une autre façon est d'utiliser le «Sur la mise à jour de la clé en double”Clause dans MySQL. Comme cette clause sera utilisée avec la requête «insérer» formant une exécution «if-else». Cela signifie donc que les données à l'intérieur du tableau ne seront mises à jour que si elle est unique. Sinon, aucun changement ne se produirait. La syntaxe générale pour cela est la suivante:

Insérer dans [Table-Name] ([Column1-name], [Column2-name], [Column3-name]) VALEUR ([Value1], [Value2], [Value3])
Sur Duplicate Key Update [Column1-name] = [Column1-name];

Voyons un exemple, pour insérer des valeurs dans «2","Pascale","Nixon","Londres","ROYAUME-UNI" et «(171) 555-7788" dans la table "Client"Pour les colonnes"Identifiant","Prénom","Nom de famille","ville","pays" et "téléphone" respectivement. Si la ligne n'existe pas déjà, elle sera insérée. Sinon, il mettra à jour les valeurs où le «Id = id»La condition se réunit. Exécutez cette requête:

Sélectionner * chez le client;
Insérer dans le client (ID, FirstName, LastName, City, Country, Phone)
Valeurs (2, «Pascale», «Nixon», «Londres», «UK», «(171) 555-7788»)
Sur la mise à jour de la clé en double ID = id;

C'est le tableau avant d'exécuter la requête, vous pouvez voir "Identifiant" égal à "2" n'existe pas:

Après avoir exécuté la requête, cette requête insérera de nouvelles lignes dans le tableau:

Vous avez réussi à insérer une nouvelle ligne, car les données n'existent pas avant d'exécuter la requête.

Conclusion

Dans MySQL, insérez une nouvelle ligne uniquement si les données n'existent pas déjà en utilisant le «Insérer Ignore»Déclaration ou«Où il n'y a pas"Clause dans le"INSÉRER DANS" déclaration. Une autre façon de le faire est d'utiliser le «Sur la mise à jour de la clé en double"Clause dans le"INSÉRER DANS»Déclaration à mettre à jour si la ligne existe déjà. Sinon, ajoutez une nouvelle ligne. Le message a expliqué comment insérer une nouvelle ligne uniquement si les données n'existent pas.