Modificando datos: UPDATE
La sentencia UPDATE te permite modificar datos existentes en una tabla. Es fundamental combinarla con WHERE para actualizar solo las filas deseadas.
Sintaxis básica
UPDATE tabla
SET columna1 = valor1, columna2 = valor2
WHERE condición;Cuidado sin WHERE
Si no incluyes WHERE, todas las filas de la tabla se actualizarán. Esto es peligroso y rara vez es lo que quieres.
Actualización con cálculos
Puedes usar expresiones para calcular nuevos valores basándote en los actuales:
UPDATE videogames
SET playtime_hours = playtime_hours + 10
WHERE developer = 'Nintendo';Actualizar múltiples columnas
Puedes modificar varias columnas a la vez en un solo UPDATE, separándolas con comas en la cláusula SET:
UPDATE videogames
SET developer = 'CD Projekt', year = 2016
WHERE title = 'The Witcher 3';Esto es más eficiente que ejecutar varios UPDATE por separado, ya que la base de datos solo necesita localizar la fila una vez.
Buena práctica: SELECT antes de UPDATE
Antes de ejecutar un UPDATE, es muy recomendable ejecutar primero un SELECT con la misma cláusula WHERE para verificar qué filas se van a modificar:
-- Primero comprueba qué filas se van a ver afectadas
SELECT * FROM videogames WHERE developer = 'Nintendo';
-- Si el resultado es el esperado, ejecuta el UPDATE
UPDATE videogames
SET playtime_hours = playtime_hours + 10
WHERE developer = 'Nintendo';Este hábito te puede ahorrar muchos disgustos, especialmente en bases de datos de producción donde un WHERE incorrecto podría modificar miles de registros no deseados.
Nuestra tabla
| id | title | developer | year | playtime_hours |
|---|---|---|---|---|
| 1 | The Legend of Zelda | Nintendo | 1986 | 20 |
| 2 | Super Mario Bros. | Nintendo | 1985 | 10 |
| 3 | Final Fantasy VII | Square Enix | 1997 | 40 |
| 4 | The Witcher 3 | CD Projekt Red | 2015 | 100 |
| 5 | Minecraft | Mojang Studios | 2011 | 9999 |
| 6 | Grand Theft Auto V | Rockstar Games | 2013 | 80 |
| 7 | Dark Souls | FromSoftware | 2011 | 60 |
| 8 | Portal 2 | Valve | 2011 | 8 |
| 9 | Red Dead Redemption 2 | Rockstar Games | 2018 | 70 |
| 10 | The Last of Us | Naughty Dog | 2013 | 15 |
| 11 | Halo: Combat Evolved | Bungie | 2001 | 10 |
| 12 | God of War | Santa Monica Studio | 2018 | 25 |