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

Mysql Comment Inserer Une Nouvelle Ligne Uniquement Si Les Donnees N Existent Pas



MySQL est un célèbre SGBDR open source pour stocker des données dans des bases de données. L'insertion de données dans les tables de votre base de données est une tâche courante. Parfois, les utilisateurs ne souhaitent pas insérer de données en double 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à.

Cet article traitera de l'insertion d'une nouvelle ligne uniquement si les données n'existent pas déjà dans la table MySQL. Avant de commencer avec cet article, assurez-vous que vous êtes connecté à votre serveur local MySQL et que vous avez choisi une base de données sur laquelle vous souhaitez travailler.

Insérer une nouvelle ligne uniquement si les données n'existent pas à l'aide de l'instruction 'INSERT IGNORE'

Eh bien, la réponse à la question dans le titre est assez simple et directe. Utilisez simplement le ' INSÉRER ' mot-clé avec le ' IGNORER ' Mot-clé. Cela garantira que les nouvelles données ou la requête d'insertion 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 :







INSÉRER IGNORER DANS [ tableau - nom ] ( [ colonne1 - nom ] , [ colonne2 - nom ] , [ colonne3 - nom ] ) VALEURS ( [ valeur1 ] , [ valeur2 ] , [ valeur3 ] ) ;

Voyons un exemple si l'utilisateur souhaite entrer une valeur de ligne ' 1 ”, “ John ' et ' Biche ' dans le ' Client « tableau pour les colonnes » Identifiant ,' ' Prénom ' et ' Nom de famille ' respectivement. Exécutez cette requête pour insérer ces valeurs, le cas échéant, si aucune ligne contenant ces valeurs n'existe déjà :



SÉLECTIONNER * DEPUIS Client;
INSÉRER IGNORER DANS Client ( Identifiant , Prénom , Nom de famille ) VALEURS ( 1 , 'John' , 'Biche' ) ;

La sortie contient deux tables affichant les données de la table 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 réussi à ignorer le processus d'insertion sans afficher l'erreur :







Insérer une nouvelle ligne uniquement si les données n'existent pas à l'aide de la clause 'WHERE NOT EXISTS'

Dans MySQL, le ' N'EXISTE PAS La clause ' empêche l'insertion de lignes si elles existent déjà dans la table lorsqu'elle est utilisée dans le ' INSÉRER DANS ” avec une sous-requête pour définir une condition. Lorsque cette clause est utilisée avec la sous-requête ' (SELECT * FROM [nom-table] [nom-colonne]=[expression]); ” vérifie si une ligne existe dans la table qui remplit la condition. Si une ligne existe, le ' OÙ N'EXISTE PAS ” renverra une valeur fausse, et la clause “ SÉLECTIONNER ' L'instruction ne renverra aucune ligne. Par conséquent, la ligne ne sera pas insérée dans le tableau. La syntaxe est fournie ci-dessous :

INSÉRER DANS [ tableau - nom ] ( [ colonne1 - nom ] , [ colonne2 - nom ] , [ colonne3 - nom ] )
SÉLECTIONNER [ valeur1 ] , [ valeur2 ] , [ valeur3 ]
PAS EXISTE ( SÉLECTIONNER * DEPUIS [ tableau - nom ] [ colonne - nom ] = [ expression ] ) ;

Voyons un exemple si l'utilisateur souhaite insérer une ligne dans la table des employés contenant des valeurs ' 1 ”, “ Américain ' 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 ' n'est pas trouvé dans le tableau ou n'existe pas. Dans ce cas particulier, la requête deviendra :



SÉLECTIONNER * DEPUIS employé;

INSÉRER DANS employé ( identifiant , Nom de l'entreprise , Nom du contact )
SÉLECTIONNER 1 , 'Américain' , 'Henriot'
PAS EXISTE ( SÉLECTIONNER * DEPUIS employé identifiant = 1 ) ;

La sortie affiche une nouvelle ligne qui n'est pas insérée en tant que ligne avec le ' identifiant ' égal à ' 1 » existait déjà.

Insérer une nouvelle ligne uniquement si les données n'existent pas à l'aide de la clause 'ON DUPLICATE KEY UPDATE'

Eh bien, une autre façon est d'utiliser le ' SUR LA MISE À JOUR DE CLÉ EN DOUBLE ” dans MySQL. Comme cette clause sera utilisée avec la requête 'INSERT INTO' formant une exécution 'if-else'. Cela signifie donc que les données à l'intérieur de la table ne seront mises à jour que si elles sont uniques. Sinon, aucun changement ne se produirait. La syntaxe générale pour cela est la suivante :

INSÉRER DANS [ tableau - nom ] ( [ colonne1 - nom ] , [ colonne2 - nom ] , [ colonne3 - nom ] ) VALEURS ( [ valeur1 ] , [ valeur2 ] , [ valeur3 ] )
SUR DUPLIQUER CLÉ MISE À JOUR [ colonne1 - nom ] = [ colonne1 - nom ] ;

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 ' Identifiant=Identifiant ” condition satisfaite. Exécutez cette requête :

SÉLECTIONNER * DEPUIS Client ;
INSÉRER DANS Client ( Identifiant , Prénom , Nom de famille , ville , pays , téléphone )
VALEURS ( 2 , 'Pascale' , 'Nixon' , 'Londres' , 'ROYAUME-UNI' , '(171) 555-7788' )
SUR DUPLIQUER CLÉ MISE À JOUR Identifiant = Identifiant;

Ceci est la table 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ère de nouvelles lignes dans la table :

Vous avez inséré avec succès une nouvelle ligne, car les données n'existent pas avant l'exécution de 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 IGNORER 'déclaration ou' OÙ N'EXISTE PAS « Clause dans le « INSÉRER DANS ' déclaration. Une autre façon de faire est d'utiliser le ' SUR LA MISE À JOUR DE CLÉ EN DOUBLE « Clause dans le « INSÉRER DANS ” à 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.