Aprende SQL

Eliminando registros: DELETE

Lección 03 · Manipulación de datos

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;

Imagen: 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

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

Tablas de esta lección

videogames5 cols

Estructura

🔑idINTEGERtitleTEXTdeveloperTEXTyearINTEGERplaytime_hoursINTEGER

Datos de ejemplo (5 filas)

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

Elimina el videojuego con id 8 (Portal 2).

sql

Elimina todos los videojuegos publicados antes de 1990.

sql

Elimina todos los videojuegos del desarrollador 'Rockstar Games'.

sql