UPDATE en MySQL: cómo modificar datos de forma segura
Aprende a usar UPDATE en MySQL para modificar una o varias filas de una tabla de forma segura.
Actualizado el
UPDATE modifica filas existentes. Antes de ejecutarlo, comprueba con un SELECT el mismo WHERE: si omites WHERE, se actualizarán todas las filas.
Si quieres insertar una fila cuando aún no existe y actualizarla cuando ya existe, consulta INSERT ... ON DUPLICATE KEY UPDATE.
Sintaxis básica
UPDATE nombre_tabla
SET columna1 = valor1, columna2 = valor2
WHERE condicion;La parte más importante es WHERE. Si la omites, MySQL actualizará todas las filas de la tabla.
Comprobar las filas con SELECT
Ejecuta primero un SELECT con exactamente la misma condición que usarás en el UPDATE:
SELECT *
FROM clientes
WHERE id = 1;Puedes construir esa comprobación con las cláusulas descritas en la guía de SELECT en MySQL.
Si el resultado es correcto, ejecuta el UPDATE.
Actualizar una fila
UPDATE clientes
SET email = '[email protected]', telefono = '111222333'
WHERE id = 1;Esta consulta modifica solo el cliente con id = 1.
Actualizar varias filas
UPDATE productos
SET precio = precio * 1.10
WHERE categoria = 'Electrónica';Aquí se aumenta un 10% el precio de todos los productos de la categoría Electrónica.
También puedes combinar condiciones:
UPDATE pedidos
SET estado = 'Entregado'
WHERE cliente_id IN (1, 2)
AND fecha < '2023-01-01';Transacciones
En tablas con un motor transaccional como InnoDB puedes revisar el cambio antes de confirmarlo:
START TRANSACTION;
UPDATE clientes
SET email = '[email protected]'
WHERE id = 1;
SELECT id, email
FROM clientes
WHERE id = 1;Si el resultado es correcto, ejecuta COMMIT; si no, ROLLBACK para deshacer el cambio. Esto presupone un motor transaccional como InnoDB.
Actualizar con ORDER BY y LIMIT
En actualizaciones de una sola tabla puedes usar ORDER BY y LIMIT. El UPDATE multitabla no admite estas cláusulas.
UPDATE tareas
SET estado = 'procesando'
WHERE estado = 'pendiente'
ORDER BY fecha_creacion ASC
LIMIT 10;Esto actualiza solo las 10 tareas pendientes más antiguas.
Actualizar usando otra tabla
MySQL permite actualizar una tabla usando datos de otra mediante JOIN.
UPDATE empleados e
JOIN departamentos d ON e.departamento_id = d.id
SET e.salario = e.salario * 1.05
WHERE d.nombre = 'Ventas';Esta consulta sube un 5% el salario de los empleados del departamento de ventas.
Consultas parametrizadas
No construyas consultas concatenando texto desde una aplicación. Usa parámetros, presentados aquí como marcadores de una consulta preparada:
UPDATE clientes
SET email = ?
WHERE id = ?;Los ? los sustituye el driver o la API de base de datos; no son sintaxis ejecutable directamente en el cliente MySQL.
Checklist final antes de actualizar
- Comprueba el
WHEREcon unSELECTprevio. - Usa parámetros si la consulta viene de una aplicación.
- Si el cambio es delicado y el motor es transaccional, envuélvelo en una transacción.
- Haz copia de seguridad antes de actualizaciones masivas.