MySQL REPLACE

Resumen: en este tutorial, aprenderá a usar la sentencia MySQL REPLACE para insertar o actualizar datos en tablas de bases de datos.

Introducción a la sentencia MySQL REPLACE

La sentencia MySQL REPLACE es una extensión del estándar SQL. La sentencia MySQL REPLACE funciona de la siguiente manera:

Paso 1. Inserta una nueva fila en la tabla, si se produce un error de clave duplicada.

Paso 2. Si la inserción falla debido a que se produce un error de clave duplicada:

  • Eliminar de la tabla la fila conflictiva que provoca el error de clave duplicada.
  • Insertar de nuevo la nueva fila en la tabla.
Para determinar si la nueva fila que ya existe en la tabla, MySQL utiliza PRIMARY KEY o UNIQUE KEY índice. Si la tabla no tiene uno de estos índices, el REPLACE funciona como una sentencia INSERT.

Para utilizar la sentencia REPLACE, es necesario tener al menos los privilegios INSERT y DELETE para la tabla.

Nota que MySQL tiene la función REPLACE de cadena que no es la sentencia REPLACE que se trata en este tutorial.

Usando MySQL REPLACE para insertar una nueva fila

Lo siguiente ilustra la sintaxis de la sentencia REPLACE:

REPLACE table_name(column_list)VALUES(value_list);

Code language: SQL (Structured Query Language) (sql)

Es similar a la sentencia INSERT excepto por la palabra clave REPLACE.

Veamos el siguiente ejemplo de uso de la sentencia REPLACE para ver cómo funciona.

Primero, crea una nueva tabla llamada cities como sigue:

CREATE TABLE cities ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), population INT NOT NULL);

Code language: SQL (Structured Query Language) (sql)

A continuación, inserta algunas filas en la tabla cities:

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

A continuación, consulta los datos de la tabla cities para verificar la operación de inserción.

SELECT * FROM cities;
Code language: SQL (Structured Query Language) (sql)
MySQL REPLACE - tabla de ejemplo

Después, utiliza la sentencia REPLACE para actualizar la población de la ciudad Los Angeles a 3696820.

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

Por último, consulta los datos de la tabla cities de nuevo para verificar la sustitución.

SELECT * FROM cities;
Code language: SQL (Structured Query Language) (sql)
Ejemplo de REPLACE en MySQL

El valor de la columna name es NULL ahora. La sentencia REPLACE funciona de la siguiente manera:

  1. Primero, la sentencia REPLACE intentó insertar una nueva fila en cities la tabla. La inserción falló porque el id 2 ya existe en la tabla cities.
  2. Entonces, la sentencia REPLACE eliminó la fila con id 2 e insertó una nueva fila con el mismo id 2 y población 3696820. Debido a que no se especifica ningún valor para la columna nombre, se estableció en NULL.

Usando la sentencia REPLACE de MySQL para actualizar una fila

Lo siguiente ilustra cómo usar la sentencia REPLACE para actualizar datos:

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

Esta sentencia es como la sentencia UPDATE excepto por la palabra clave REPLACE. Además, no tiene la cláusula WHERE.

Este ejemplo utiliza la sentencia REPLACE para actualizar la población de la ciudad Phoenix a 1768980:

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

A diferencia de la sentencia UPDATE, si no se especifica el valor de la columna en la cláusula SET, la sentencia REPLACE utilizará el valor por defecto de esa columna.

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

Usando MySQL REPLACE para insertar datos desde una sentencia SELECT

A continuación se ilustra la sentencia REPLACE que inserta datos en una tabla con los datos procedentes de una consulta.

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

Nota que esta forma de la sentencia REPLACE es similar a la sentencia INSERT INTO SELECT.

La siguiente sentencia utiliza la sentencia REPLACE INTO para copiar una fila dentro de la misma tabla:

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

En este tutorial, has aprendido diferentes formas de la sentencia MySQL REPLACE para insertar o actualizar datos en una tabla.

  • ¿Ha sido útil este tutorial?
  • SíNo

Se puede decir que ha sido útil.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *