Aprende SQL · lección gratuita

Lección 36 · Actualizar datos: UPDATE

Resumen

UPDATE modifica los valores de filas existentes. Cambia columnas de las filas que cumplen una condición WHERE. Sin WHERE, actualiza todas las filas de la tabla — el error más caro de SQL. Aquí siempre trabajamos sobre tablas temporales clonadas de la semilla.

Sintaxis / Conceptos

El motor recorre las filas que pasan el WHERE y reasigna las columnas del SET. Las expresiones del lado derecho se evalúan fila por fila usando los valores actuales de esa fila antes del cambio. Por eso SET salario = salario + 500 suma 500 al salario de cada fila afectada, individualmente.

Buenas prácticas y errores:

SELECT id, nombre, cargo, salario FROM empleados WHERE departamento_id = 2 ORDER BY salario DESC

Ejemplos

-- Clon de trabajo idempotente con datos reales de la semilla
DROP TABLE IF EXISTS emp_ajuste;
CREATE TABLE emp_ajuste AS SELECT * FROM empleados;

-- UPDATE con WHERE: subir salario fijo a un departamento
UPDATE emp_ajuste SET salario = salario + 500 WHERE departamento_id = 2;

-- UPDATE con expresión y CASE: aumento porcentual según cargo
UPDATE emp_ajuste
SET salario = ROUND(
      salario * CASE WHEN cargo LIKE '%Director%' THEN 1.05 ELSE 1.10 END
    );

SELECT id, nombre, cargo, salario FROM emp_ajuste WHERE departamento_id = 2 ORDER BY id;
💡 El error nº1 con UPDATE es olvidar el WHERE y modificar toda la tabla. Hábito de oro: escribe primero SELECT * FROM t WHERE <cond>;, comprueba el resultado, y solo entonces cámbialo por UPDATE ... SET ....

Cheatsheet

FormaQué hace
UPDATE t SET a = 1 WHERE id = 5;Cambia una columna de filas filtradas
UPDATE t SET a = a + 10 WHERE ...;Usa la propia columna en una expresión
UPDATE t SET a=1, b=2 WHERE ...;Cambia varias columnas a la vez
UPDATE t SET a = CASE WHEN ... END;Aplica reglas distintas por fila
UPDATE t SET a = 0;⚠️ Sin WHERE: afecta TODAS las filas

---

← Insertar datos: INSERTEliminar datos: DELETE →

Ver todas las lecciones de Aprende SQL →