MySQL REPLACE

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 :

REPLACE table_name(column_list)VALUES(value_list);
Code language: SQL (Structured Query Language) (sql)
Elle est similaire à l’instruction 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 :

CREATE TABLE cities ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), population INT NOT NULL);
Code language: SQL (Structured Query Language) (sql)

Puis, insérez quelques lignes dans la table cities :

INSERT INTO cities(name,population)VALUES('New York',8008278), ('Los Angeles',3694825), ('San Diego',1223405);
Code language: SQL (Structured Query Language) (sql)

Ensuite, interrogez les données de la table cities pour vérifier l’opération d’insertion.

SELECT * FROM cities;
Code language: SQL (Structured Query Language) (sql)
MySQL REPLACE - table échantillon

Après cela, utilisez l’instruction REPLACE pour mettre à jour la population de la ville Los Angeles en 3696820.

REPLACE INTO cities(id,population)VALUES(2,3696820);
Code language: SQL (Structured Query Language) (sql)

Enfin, interrogez à nouveau les données de la table cities pour vérifier le remplacement.

SELECT * FROM cities;
Code language: SQL (Structured Query Language) (sql)
Exemple de remplacement MySQL

La valeur de la colonne name est NULL maintenant. L’instruction REPLACE fonctionne comme suit :

  1. D’abord, l’instruction REPLACE a tenté d’insérer une nouvelle ligne dans cities la table. L’insertion a échoué car l’id 2 existe déjà dans la table cities.
  2. 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 population 3696820. 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 :

REPLACE INTO tableSET column1 = value1, column2 = value2;
Code language: SQL (Structured Query Language) (sql)

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 :

REPLACE INTO citiesSET id = 4, name = 'Phoenix', population = 1768980;
Code language: SQL (Structured Query Language) (sql)

À 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.

SELECT * FROM cities;
Code language: SQL (Structured Query Language) (sql)

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.

REPLACE INTO table_1(column_list)SELECT column_listFROM table_2WHERE where_condition;
Code language: SQL (Structured Query Language) (sql)

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 :

REPLACE INTO cities(name,population)SELECT name, population FROM cities WHERE id = 1;
Code language: SQL (Structured Query Language) (sql)

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

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *