Curso de Fundamentos de Bases de Datos

Actualizar registros en SQL con UPDATE

Curso de Fundamentos de Bases de Datos

Contenido del curso

Manipulación de Datos

Actualizar registros en SQL con UPDATE

Resumen

Modificar registros en SQL con el comando UPDATE es una de las operaciones más cotidianas y, al mismo tiempo, una de las más delicadas dentro de una base de datos. Aprenderás cómo actualizar uno o varios registros con seguridad, usar condiciones precisas con WHERE y aplicar fail safes que evitan accidentes irreversibles.

¿Qué hace el comando UPDATE en SQL y cuál es su sintaxis?

El comando UPDATE sirve para modificar datos que ya existen dentro de una tabla. Piensa en un formulario web donde un usuario cambia su número de teléfono: ese cambio tiene que aterrizar en la base de datos como un registro puntual, y UPDATE es la herramienta que lo permite [02:48].

La estructura básica es directa:

sql UPDATE tabla SET columna = nuevo_valor WHERE condiciones;

¿Qué hace UPDATE en SQL? Modifica uno o varios registros existentes en una tabla. Cambia el valor de las columnas indicadas en SET solo en las filas que cumplan las condiciones del WHERE.

Un detalle clave: el orden de los operadores UPDATE, SET y WHERE es lo único que importa. Puedes escribir todo en una línea o repartirlo en varios renglones con indentación a tu gusto. SQL ejecutará la sentencia igual mientras el orden lógico se respete [04:46].

¿Por qué el WHERE es obligatorio al actualizar registros?

Si olvidas el WHERE, la sentencia sigue siendo válida, pero modificará todas las filas de la tabla. Quieres cambiar el teléfono de una persona y terminas sobrescribiendo los 98.000 contactos de tu base de datos.

La recomendación es contundente: empieza siempre por el WHERE antes de escribir el resto del update. Lo mismo aplicará para DELETE. Es una disciplina que evita catástrofes.

¿Cómo actualizar un solo registro de forma segura con LIMIT?

Para cambiar el teléfono del cliente con client_id 19, la sentencia se ve así:

sql UPDATE clients SET phone_number = '525512345678' WHERE client_id = 19 LIMIT 1;

El LIMIT 1 funciona como un candado adicional. Aunque sabes que el ID es único, este fail safe garantiza que la operación afecte como máximo una fila [07:51]. Es una buena costumbre mientras tomas confianza alterando datos en producción.

La respuesta del manejador después de ejecutar te confirma el resultado: Query OK, 1 row affected, rows matched 1, changed 1, warnings 0. Esos cuatro datos te dicen exactamente qué pasó.

¿Cómo elegir la condición correcta en el WHERE?

La regla práctica es ir siempre por columnas únicas. El client_id es la mejor opción porque garantiza que solo una fila cumpla la condición. Si por alguna razón no puedes usar el ID, busca columnas con la menor repetición posible, como el email.

Filtrar por name es riesgoso: pueden existir varias Claire Windler en la tabla, y modificarías a todas sin querer.

¿Cómo modificar múltiples registros con condiciones combinadas?

El UPDATE también funciona para grandes volúmenes de datos cuando combinas condiciones con operadores lógicos. Imagina que quieres dejar el teléfono en NULL para todos los clientes llamados Laura o Claire:

sql UPDATE clients SET phone_number = NULL WHERE (name LIKE 'Laura' OR name LIKE 'Claire') AND phone_number IS NOT NULL LIMIT 10;

Antes de ejecutar el update, conviene correr un SELECT con las mismas condiciones para entender exactamente qué filas vas a tocar. En el ejemplo aparecieron 52 registros que cumplen el criterio [13:13].

¿Para qué sirve combinar condiciones con AND y OR en un UPDATE? Permite acotar con precisión qué filas se modifican. Cada condición se evalúa como una entidad booleana true o false, y al combinarlas con AND/OR defines exactamente el subconjunto a actualizar.

¿Por qué usar IS NOT NULL al actualizar por lotes?

Cuando ejecutas un update con LIMIT en lotes pequeños, corres el riesgo de que la consulta encuentre siempre las mismas 10 filas y deje fuera al resto. Si las primeras 10 ya tienen el teléfono en NULL, el manejador devolverá rows matched 10, changed 0: encontró las mismas, pero no había nada que cambiar.

La solución es agregar AND phone_number IS NOT NULL. Así, cada ejecución salta las filas ya modificadas y avanza al siguiente lote hasta cubrir las 52 filas originales.

¿Cómo actualizar una columna usando su propio valor?

Aquí entra una de las jugadas más potentes del UPDATE: usar el valor actual de la columna como base del cálculo. Es ideal para manejar inventarios, contadores o saldos.

Primero, agregamos una columna stock a la tabla products con ALTER TABLE:

sql ALTER TABLE products ADD COLUMN stock INT NOT NULL DEFAULT 0 AFTER price;

Luego, llenamos el stock inicial con valores aleatorios usando las funciones RAND() y ROUND():

sql UPDATE products SET stock = ROUND(100 * RAND());

La función RAND() devuelve un número entre 0 y 1, lo multiplicas por 100 y ROUND() lo redondea al entero más cercano. El resultado: 2.358 productos con stock asignado en una sola sentencia [19:30].

¿Cómo descontar inventario con UPDATE en una sola sentencia?

Si vendes tres unidades del producto con ID 8, el approach ineficiente sería: leer el stock actual, restar tres en tu lenguaje de programación y luego escribir el nuevo valor. Tres viajes a la base de datos.

La forma elegante es una sola sentencia que usa la columna como referencia:

sql UPDATE products SET stock = stock - 3 WHERE product_id = 8;

Si el stock era 74, queda en 71 [21:52]. Una sola consulta, atómica, sin condiciones de carrera entre la lectura y la escritura. Aunque para inventarios reales existen patrones más robustos, este ejemplo muestra el poder de operar sobre el valor existente.

Un SQL bien escrito sobre una tabla bien diseñada es un pequeño gran superpoder: tus datos quedan organizados, accesibles y manejables con sentencias mínimas.

¿Qué UPDATE te ha sacado de un apuro o te ha causado un susto? Cuéntalo en los comentarios.