Résumé : dans ce tutoriel, vous apprendrez à utiliser l’instruction MySQL REPLACE pour insérer ou mettre à jour des données dans des tables de bases de données.
Introduction à l’instruction MySQL REPLACE
L’instruction MySQL REPLACE est une extension du standard SQL. L’instruction MySQL REPLACE fonctionne comme suit :
Etape 1. Insérer une nouvelle ligne dans la table, si une erreur de clé dupliquée se produit.
Etape 2. Si l’insertion échoue en raison d’une erreur de clé dupliquée se produit :
- Supprimer de la table la ligne en conflit qui provoque l’erreur de clé dupliquée.
- Insérer à nouveau la nouvelle ligne dans la table.
Pour déterminer si la nouvelle ligne qui existe déjà dans la table, MySQL utilise PRIMARY KEY ou UNIQUE KEY index. Si la table ne possède pas l’un de ces index, la REPLACE fonctionne comme une instruction INSERT.
Pour utiliser l’instruction REPLACE, vous devez avoir au moins les deux privilèges INSERT et DELETE pour la table.
Notez que MySQL dispose de la fonction REPLACE string qui n’est pas l’instruction REPLACE traitée dans ce tutoriel.
Utilisation de MySQL REPLACE pour insérer une nouvelle ligne
Les éléments suivants illustrent la syntaxe de l’instruction REPLACE :
Code language: SQL (Structured Query Language) (sql)REPLACE table_name(column_list)VALUES(value_list);
INSERT à l’exception du mot clé REPLACE.Regardons l’exemple suivant d’utilisation de l’instruction REPLACE pour voir comment elle fonctionne.
D’abord, créez une nouvelle table nommée cities comme suit :
Code language: SQL (Structured Query Language) (sql)CREATE TABLE cities ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), population INT NOT NULL);
Puis, insérez quelques lignes dans la table cities :
Code language: SQL (Structured Query Language) (sql)INSERT INTO cities(name,population)VALUES('New York',8008278), ('Los Angeles',3694825), ('San Diego',1223405);
Ensuite, interrogez les données de la table cities pour vérifier l’opération d’insertion.
Code language: SQL (Structured Query Language) (sql)SELECT * FROM cities;

Après cela, utilisez l’instruction REPLACE pour mettre à jour la population de la ville Los Angeles en 3696820.
Code language: SQL (Structured Query Language) (sql)REPLACE INTO cities(id,population)VALUES(2,3696820);
Enfin, interrogez à nouveau les données de la table cities pour vérifier le remplacement.
Code language: SQL (Structured Query Language) (sql)SELECT * FROM cities;

La valeur de la colonne name est NULL maintenant. L’instruction REPLACE fonctionne comme suit :
- D’abord, l’instruction
REPLACEa tenté d’insérer une nouvelle ligne danscitiesla table. L’insertion a échoué car l’id 2 existe déjà dans la tablecities. - Puis, l’instruction
REPLACEa supprimé la ligne avec l’id 2 et a inséré une nouvelle ligne avec le même id 2 et la même population3696820. Comme aucune valeur n’est spécifiée pour la colonne name, elle a été définie àNULL.
Utilisation de l’instruction MySQL REPLACE pour mettre à jour une ligne
L’exemple suivant illustre comment utiliser l’instruction REPLACE pour mettre à jour des données :
Code language: SQL (Structured Query Language) (sql)REPLACE INTO tableSET column1 = value1, column2 = value2;
Cette instruction est semblable à l’instruction UPDATE, à l’exception du mot-clé REPLACE. En outre, elle ne comporte pas de clause WHERE.
Cet exemple utilise l’instruction REPLACE pour mettre à jour la population de la ville Phoenix1768980 :
Code language: SQL (Structured Query Language) (sql)REPLACE INTO citiesSET id = 4, name = 'Phoenix', population = 1768980;
À la différence de l’instruction UPDATE, si vous ne spécifiez pas la valeur de la colonne dans la clause SET, l’instruction REPLACE utilisera la valeur par défaut de cette colonne.
Code language: SQL (Structured Query Language) (sql)SELECT * FROM cities;
Utilisation de MySQL REPLACE pour insérer des données provenant d’une instruction SELECT
L’exemple suivant illustre l’instruction REPLACE qui insère des données dans une table avec les données provenant d’une requête.
Code language: SQL (Structured Query Language) (sql)REPLACE INTO table_1(column_list)SELECT column_listFROM table_2WHERE where_condition;
Notez que cette forme de l’instruction REPLACE est similaire à l’instruction INSERT INTO SELECT.
L’instruction suivante utilise l’instruction REPLACE INTO pour copier une ligne dans la même table :
Code language: SQL (Structured Query Language) (sql)REPLACE INTO cities(name,population)SELECT name, population FROM cities WHERE id = 1;
Dans ce tutoriel, vous avez appris différentes formes de l’instruction MySQL REPLACE pour insérer ou mettre à jour des données dans une table.
- Ce tutoriel vous a-t-il été utile ?
- OuiNon
.