Aprende SQL

Eliminando tablas: DROP TABLE

Lección 04 · Estructura de tablas

Eliminando tablas: DROP TABLE

DROP TABLE elimina una tabla completa de la base de datos, incluyendo toda su estructura y datos. Es una operación irreversible.

Diagrama: tabla temp_data (id INTEGER, value TEXT) marcada con “✕” y flecha hacia DROP TABLE con el rótulo “Tabla + datos eliminados”.

Sintaxis básica

DROP TABLE nombre_tabla;

DROP TABLE IF EXISTS

Para evitar errores si la tabla no existe, usa IF EXISTS:

DROP TABLE IF EXISTS nombre_tabla;

Sin IF EXISTS, intentar eliminar una tabla que no existe provocará un error. Con IF EXISTS, la sentencia simplemente no hace nada si la tabla no existe.

Cuidado

DROP TABLE es destructivo e irreversible:

  • Elimina la tabla y todos sus datos.
  • En producción, siempre ten un respaldo antes de ejecutarlo.
  • A diferencia de DELETE (que elimina filas), DROP TABLE elimina la tabla entera.

Comparativa: DELETE vs DROP vs TRUNCATE

Estas tres sentencias eliminan datos, pero de formas muy diferentes:

Característica DELETE DROP TABLE TRUNCATE TABLE
¿Qué elimina? Filas (datos) Tabla completa (datos + estructura) Todas las filas (datos)
¿Mantiene la tabla? No
¿Permite WHERE? No No
¿Se puede revertir? Sí (con transacciones) No Depende del motor
¿Soporte en SQLite? No

¿Cuándo usar cada uno?

  • Usa DELETE cuando necesites eliminar filas específicas o todas las filas pero quieras conservar la estructura de la tabla.
  • Usa DROP TABLE cuando quieras eliminar la tabla por completo, por ejemplo, al limpiar tablas temporales o reestructurar tu base de datos.
  • Usa TRUNCATE TABLE (en otros motores como MySQL o PostgreSQL) cuando necesites vaciar una tabla entera de forma rápida. Es más eficiente que DELETE sin WHERE porque no registra la eliminación fila por fila. SQLite no soporta TRUNCATE, pero puedes lograr el mismo efecto con DELETE FROM tabla sin cláusula WHERE.

Nuestras tablas

En este ejercicio tenemos tres tablas:

Nombre de la Tabla: videogames

id title developer year playtime_hours
1 The Legend of Zelda Nintendo 1986 20
12 God of War Santa Monica Studio 2018 25

Nombre de la Tabla: old_games

id title
1 Pong
2 Space Invaders

Nombre de la Tabla: temp_data

id value
1 test

Tablas de esta lección

old_games2 cols

Estructura

🔑idINTEGERtitleTEXT

Datos de ejemplo (2 filas)

idtitle
1Pong
2Space Invaders
temp_data2 cols

Estructura

🔑idINTEGERvalueTEXT

Datos de ejemplo (1 fila)

idvalue
1test
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 la tabla 'temp_data'.

sql

Elimina la tabla 'old_games' usando IF EXISTS.

sql

Elimina la tabla 'videogames' y luego crea una nueva tabla 'videogames' con solo dos columnas: id (INTEGER, PRIMARY KEY) y title (TEXT, NOT NULL).

sql