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
REPLACE
a tenté d’insérer une nouvelle ligne danscities
la table. L’insertion a échoué car l’id 2 existe déjà dans la tablecities
. - Puis, l’instruction
REPLACE
a 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 Phoenix
1768980
:
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
.