Tema SQL
UPDATE: modificar filas existentes
Modifica columnas de filas que cumplen una condición. Sin WHERE, afecta a toda la tabla y es una operación de alto riesgo en producción.
Descripción
UPDATE asigna nuevos valores a columnas seleccionadas. La cláusula SET puede listar varias asignaciones; el lado derecho puede ser literal, expresión, función o subconsulta escalar. WHERE delimita el subconjunto de filas; en entornos reales casi siempre debe estar acotado por clave primaria o criterio inequívoco. Revisa locks y nivel de aislamiento si actualizas mientras otras sesiones leen las mismas filas. Algunos motores permiten UPDATE con JOIN o FROM para actualizar en función de otras tablas.
Estructura general
Forma habitual de la sentencia: orden de cláusulas, qué parte filtra, agrupa o proyecta columnas, y qué devuelve el motor. Cópiala como plantilla y sustituye nombres por tus tablas reales.
UPDATE tabla
SET columna = valor [, columna2 = valor2 ...]
[ WHERE condición ];
Componentes
Cada componente tiene un papel concreto en la ejecución lógica de la sentencia. Léelos en orden: así entiendes qué puedes omitir, qué es obligatorio y qué expresiones son válidas en cada sitio según tu motor.
- UPDATE
- Identifica la tabla objetivo. Solo las filas que cumplan WHERE (si existe) se modifican; el resto permanece intacto.
- SET
- Pares columna = expresión. Puedes referenciar otras columnas de la misma fila en la expresión según reglas del motor (orden de evaluación).
- WHERE
- Filtro por fila. Sin WHERE, todas las filas de la tabla reciben el mismo SET salvo restricciones de trigger o permisos.
Ejemplos
Ejemplo 1
UPDATE usuarios
SET ultimo_acceso = NOW()
WHERE id = 42;
Ejemplo 2
UPDATE productos
SET stock = stock - 1
WHERE id = 10
AND stock > 0;
Temas relacionados
Enlaces internos para seguir leyendo: SELECT, WHERE, JOIN, GROUP BY y el resto de la referencia SQL.
Los ejemplos son ilustrativos. En producción usa consultas parametrizadas (prepared statements), revisa índices y aplica el principio de menor privilegio en cuentas de base de datos.