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
REPLACE
intentó insertar una nueva fila encities
la tabla. La inserción falló porque el id 2 ya existe en la tablacities
. - Entonces, la sentencia
REPLACE
eliminó 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.