L'instruction REPLACE dans MySQL est une extension du standard SQL. Cette instruction fonctionne de la même manière que l'instruction INSERT, sauf que si une ancienne ligne correspond au nouvel enregistrement dans la table pour une PRIMARY KEY ou un index UNIQUE, cette commande supprime l'ancienne ligne avant que la nouvelle ligne ne soit ajoutée.
Cette instruction est requise lorsque nous souhaitons mettre à jour les enregistrements existants dans la table pour les maintenir à jour. Si nous utilisons la requête d'insertion standard à cette fin, elle donnera une entrée en double pour PRIMARY KEY ou une erreur de clé UNIQUE. Dans ce cas, nous utiliserons l'instruction REPLACE pour effectuer notre tâche. La commande REPLACE nécessite l'un des deux possible les actions ont lieu :
- Si aucune valeur correspondante n'est trouvée avec la ligne de données existante, une instruction INSERT standard est exécutée.
- Si l'enregistrement en double est trouvé, la commande de remplacement supprimera la ligne existante puis ajoutera le nouvel enregistrement dans la table.
Dans l'instruction REPLACE, la mise à jour s'est effectuée en deux étapes. Tout d'abord, il supprimera l'enregistrement existant, puis l'enregistrement nouvellement mis à jour sera ajouté, similaire à une commande INSERT standard. Ainsi, on peut dire que l'instruction REPLACE remplit deux fonctions standards, SUPPRIMER et INSÉRER .
Syntaxe
Voici la syntaxe de REMPLACER déclaration dans MySQL :
REPLACE [INTO] table_name(column_list) VALUES(value_list);
Exemple de remplacement MySQL
Comprenons le fonctionnement de l'instruction REPLACE dans MySQL à l'aide d'un exemple. Tout d'abord, nous allons créer une table nommée 'Personne' en utilisant la déclaration suivante :
CREATE TABLE Person ( ID int AUTO_INCREMENT PRIMARY KEY, Name varchar(45) DEFAULT NULL, Email varchar(45) DEFAULT NULL UNIQUE, City varchar(25) DEFAULT NULL );
Ensuite, nous devons remplir l'enregistrement dans le tableau en utilisant le INSÉRER déclaration comme ci-dessous :
INSERT INTO Person(ID, Name, Email, City) VALUES (1,'Mike', '[email protected]', 'California'), (2, 'Alexandar', '[email protected]', 'New York'), (3, 'Adam', '[email protected]', 'Los Angeles'), (4, 'Peter', '[email protected]', 'Alaska');
Exécuter le SÉLECTIONNER instruction pour vérifier les enregistrements qui peuvent être affichés dans la sortie ci-dessous :
Après avoir vérifié les données dans une table, nous pouvons remplacer n'importe quelle ancienne ligne par la nouvelle ligne à l'aide de l'instruction REPLACE. Exécutez l'instruction ci-dessous qui met à jour le ville d'une personne dont l'identifiant est 4 .
REPLACE INTO Person (id, city) VALUES(4,'Amsterdam');
Après l'exécution réussie de l'instruction ci-dessus, il est nécessaire d'interroger à nouveau les données de la table Personne pour vérifier le remplacement.
La valeur dans le nom et e-mail les colonnes sont NUL maintenant. En effet, l'instruction REPLACE fonctionne comme suit :
- Cette instruction tente d'abord d'insérer une nouvelle ligne dans la table Person. Mais l'insertion d'une nouvelle ligne échoue car l'id = 4 existe déjà dans la table.
- Ainsi, cette instruction supprime d'abord la ligne dont l'identifiant = 4, puis insère une nouvelle ligne avec le même identifiant et la même ville qu'Amsterdam. Comme nous n'avons pas spécifié la valeur des colonnes nom et e-mail, elle a été définie sur NULL.
Instruction MySQL REPLACE pour mettre à jour une ligne
Nous pouvons utiliser l'instruction REPLACE suivante pour mettre à jour les données d'une ligne dans une table :
REPLACE INTO table SET column1 = value1, column2 = value2;
La syntaxe ci-dessus est similaire à la Instruction MISE À JOUR à l'exception du mot-clé REPLACE. Il est à noter que nous ne pouvons pas utiliser la clause WHERE avec cette instruction.
Exécutez l'exemple ci-dessous qui utilise l'instruction REPLACE pour mettre à jour la ville de la personne nommée Mike depuis Californie à Birmingham .
REPLACE INTO Person SET ID = 1, Name = 'Mike', City = 'Birmingham';
Après vérification du tableau, nous pouvons voir le résultat suivant :
Si nous n'avons pas précisé la valeur de la colonne dans le Clause SET , cette commande fonctionne comme Instruction MISE À JOUR , ce qui signifie que l'instruction REPLACE utilisera la valeur par défaut de cette colonne.
MySQL REPLACE pour insérer les données de l'instruction SELECT.
Nous pouvons utiliser l'instruction REPLACE INTO suivante pour insérer des données dans une table avec les données renvoyées par une requête.
REPLACE INTO table1(column_list) SELECT column_list FROM table2 WHERE condition;
Il est à noter que la requête REPLACE ci-dessus est similaire à la INSÉRER DANS SÉLECTIONNER déclaration. Exécutez l'exemple ci-dessous qui utilise l'instruction REPLACE INTO pour copier une ligne dans la même table.
REPLACE INTO Person(Name, City) SELECT Name, City FROM Person WHERE id = 2;
Après vérification du tableau, nous obtiendrons le résultat suivant. Dans cette sortie, nous pouvons voir que la copie d'une ligne dans la même table est ajoutée avec succès.