Aprende SQL

Eliminando registros: DELETE

La sentencia DELETE te permite eliminar filas de una tabla. Al igual que con UPDATE, siempre debes usar WHERE para especificar qué filas eliminar.

Antes
idtitledev
1ZeldaNintendo
8Portal 2Valve
3FF VIISquare
DELETE →
Después
idtitledev
1ZeldaNintendo
3FF VIISquare

Sintaxis básica

DELETE FROM tabla
WHERE condición;

Cuidado sin WHERE

Si omites WHERE, se eliminarán todas las filas de la tabla:

-- ¡PELIGRO! Elimina TODOS los registros
DELETE FROM videogames;
Meme: Hice un DELETE y olvidé poner el WHERE

Eliminar con condiciones

Puedes usar cualquier condición válida en WHERE:

DELETE FROM videogames WHERE year < 1990;
DELETE FROM videogames WHERE developer = 'Valve';
DELETE FROM videogames WHERE playtime_hours > 1000;

Buena práctica: SELECT antes de DELETE

Al igual que con UPDATE, antes de eliminar registros conviene ejecutar un SELECT con la misma condición WHERE para verificar exactamente qué filas se van a borrar:

-- Primero revisa qué vas a eliminar
SELECT * FROM videogames WHERE year < 1990;

-- Si estás conforme, ejecuta el DELETE
DELETE FROM videogames WHERE year < 1990;

Este paso de verificación es especialmente importante porque DELETE no se puede deshacer fácilmente. Mejor prevenir que lamentar.

DELETE vs DROP TABLE

Es importante no confundir estas dos sentencias, ya que hacen cosas muy diferentes:

  • DELETE FROM tabla elimina filas de la tabla, pero la tabla sigue existiendo con su estructura (columnas, tipos, restricciones). Puedes usar WHERE para borrar solo algunas filas.
  • DROP TABLE tabla elimina la tabla por completo: estructura, datos y todo. La tabla deja de existir en la base de datos.
-- Elimina todas las filas, pero la tabla sigue existiendo
DELETE FROM videogames;

-- Elimina la tabla entera (estructura + datos)
DROP TABLE videogames;

Después de un DELETE FROM videogames, puedes seguir insertando nuevos registros en la tabla. Después de un DROP TABLE videogames, la tabla ya no existe y tendrías que volver a crearla con CREATE TABLE.

Nuestra tabla

Nombre de la Tabla: videogames
idtitledeveloperyearplaytime_hours
1The Legend of ZeldaNintendo198620
2Super Mario Bros.Nintendo198510
3Final Fantasy VIISquare Enix199740
4The Witcher 3CD Projekt Red2015100
5MinecraftMojang Studios20119999
6Grand Theft Auto VRockstar Games201380
7Dark SoulsFromSoftware201160
8Portal 2Valve20118
9Red Dead Redemption 2Rockstar Games201870
10The Last of UsNaughty Dog201315
11Halo: Combat EvolvedBungie200110
12God of WarSanta Monica Studio201825

Ejercicios