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.
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)
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:
Code language: SQL (Structured Query Language) (sql)INSERT INTO cities(name,population)VALUES('New York',8008278), ('Los Angeles',3694825), ('San Diego',1223405);
A continuación, consulta los datos de la tabla cities para verificar la operación de inserción.
Code language: SQL (Structured Query Language) (sql)SELECT * FROM cities;

Después, utiliza la sentencia REPLACE para actualizar la población de la ciudad Los Angeles a 3696820.
Code language: SQL (Structured Query Language) (sql)REPLACE INTO cities(id,population)VALUES(2,3696820);
Por último, consulta los datos de la tabla cities de nuevo para verificar la sustitución.
Code language: SQL (Structured Query Language) (sql)SELECT * FROM cities;

El valor de la columna name es NULL ahora. La sentencia REPLACE funciona de la siguiente manera:
- Primero, la sentencia
REPLACEintentó insertar una nueva fila encitiesla tabla. La inserción falló porque el id 2 ya existe en la tablacities. - Entonces, la sentencia
REPLACEeliminó la fila con id 2 e insertó una nueva fila con el mismo id 2 y población3696820. Debido a que no se especifica ningún valor para la columna nombre, se estableció enNULL.
Usando la sentencia REPLACE de MySQL para actualizar una fila
Lo siguiente ilustra cómo usar la sentencia REPLACE para actualizar datos:
Code language: SQL (Structured Query Language) (sql)REPLACE INTO tableSET column1 = value1, column2 = value2;
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:
Code language: SQL (Structured Query Language) (sql)REPLACE INTO citiesSET id = 4, name = 'Phoenix', population = 1768980;
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.
Code language: SQL (Structured Query Language) (sql)SELECT * FROM cities;
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.
Code language: SQL (Structured Query Language) (sql)REPLACE INTO table_1(column_list)SELECT column_listFROM table_2WHERE where_condition;
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:
Code language: SQL (Structured Query Language) (sql)REPLACE INTO cities(name,population)SELECT name, population FROM cities WHERE id = 1;
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.