CodeGym /Cursos /SQL SELF /Eliminando tablas usando DROP TABLE

Eliminando tablas usando DROP TABLE

SQL SELF
Nivel 18 , Lección 2
Disponible

Ahora vamos a hablar de cómo eliminar correctamente tablas de una base de datos usando el comando DROP TABLE.

DROP TABLE es un comando que te permite borrar una tabla de la base de datos junto con todos sus datos y estructura. Imagina que escribiste tu proyecto de fin de carrera y luego, por accidente, lo quemaste junto con tu portátil. Eso es más o menos como usar DROP TABLE. ¿Suena aterrador? ¡No te preocupes! Lo más importante es entender cómo funciona y tener cuidado.

Características de DROP TABLE:

  • Elimina toda la tabla (y sus datos) sin posibilidad de recuperación (a menos que hayas hecho una copia de seguridad).
  • Libera completamente el espacio que ocupaba la tabla en el disco.
  • También elimina todos los índices, restricciones y triggers asociados.

Sintaxis del comando DROP TABLE

El comando DROP TABLE tiene una sintaxis simple y clara:

DROP TABLE tabla;

Donde:

  • tabla — el nombre de la tabla que quieres eliminar.

Ejemplo sencillo de eliminación de una tabla

Vamos a ver un ejemplo. Supón que tienes una tabla students:

CREATE TABLE students (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    age INTEGER CHECK (age > 0)
);

Si ya no necesitas esta tabla, puedes eliminarla con el comando:

DROP TABLE students;

Después de ejecutar este comando, la tabla students desaparecerá completamente de la base de datos, incluyendo todos los datos de los estudiantes (que podrían haber estado en ella).

Eliminando varias tablas

También puedes eliminar varias tablas en una sola consulta. Para eso, enuméralas separadas por comas:

DROP TABLE table1, table2, table3;

Ejemplo:

DROP TABLE students, teachers, courses;

Este comando eliminará de golpe tres tablas: students, teachers y courses.

Usando IF EXISTS

El comando DROP TABLE te dará un error si intentas eliminar una tabla que no existe. Para evitar este error, puedes usar la opción IF EXISTS:

DROP TABLE IF EXISTS table_name;

Ejemplo:

DROP TABLE IF EXISTS students;

Si la tabla students existe, será eliminada. Si no existe, el comando se ejecutará sin error y te dará una advertencia.

Eliminando tablas con dependencias

A veces eliminar tablas puede ser complicado si otras tablas u objetos dependen de ella. Por ejemplo, si la tabla tiene claves foráneas relacionadas con otras tablas. Te contaré más sobre claves foráneas en el siguiente nivel :P

Supón que tienes dos tablas: students y enrollments. La tabla enrollments depende de la tabla students, ya que hace referencia a ella mediante una clave foránea.

CREATE TABLE students (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL
);

CREATE TABLE enrollments (
    id SERIAL PRIMARY KEY,
    student_id INTEGER REFERENCES students(id), -- columna student_id hace referencia a students.id
    course_name VARCHAR(100)
);

Si intentas eliminar la tabla students sin eliminar primero la tabla enrollments, obtendrás un error:

DROP TABLE students;
-- ERROR:  no se puede eliminar la tabla "students" porque otros objetos dependen de ella
-- DETAIL:  constraint enrollments_student_id_fkey en la tabla enrollments depende de la tabla students

Para eliminar la tabla y todos los objetos dependientes, usa la opción CASCADE:

DROP TABLE students CASCADE;

Este comando eliminará la tabla students y automáticamente eliminará todos los objetos que dependen de ella (en este caso la tabla enrollments).

Pero ten cuidado con CASCADE, porque puede eliminar más objetos de los que esperabas. Para saber qué objetos serán eliminados, usa CASCADE y luego revisa los logs :)

Eliminando tablas sin borrar objetos dependientes

Si quieres evitar borrar accidentalmente objetos relacionados, usa la opción RESTRICT. Esta opción prohíbe eliminar la tabla si otros objetos dependen de ella:

DROP TABLE students RESTRICT;

Si la tabla tiene objetos dependientes, el comando dará un error y cancelará la operación de borrado.

Tablas temporales y su eliminación

Las tablas temporales (creadas con CREATE TEMP TABLE) se eliminan automáticamente cuando la sesión de la base de datos termina. Sin embargo, puedes eliminar una tabla temporal manualmente durante la sesión usando DROP TABLE.

Ejemplo:

CREATE TEMP TABLE temp_data (
    id SERIAL PRIMARY KEY,
    value TEXT
);

DROP TABLE temp_data;

Errores típicos al usar DROP TABLE

Intentar eliminar una tabla que no existe. Para evitar el error, usa IF EXISTS.

DROP TABLE IF EXISTS non_existing_table;

Eliminar una tabla con dependencias sin usar CASCADE. Si otras tablas están relacionadas con la tabla que intentas eliminar, el comando fallará. Usa CASCADE si estás seguro de eliminar todas las dependencias.

DROP TABLE students CASCADE;

Uso excesivo de CASCADE. Esto puede llevar a borrar objetos críticos. Antes de usar CASCADE, asegúrate de entender qué objetos se verán afectados.

Borrar una tabla por accidente. Siempre revisa dos veces lo que vas a eliminar, especialmente en bases de datos de producción.

Consejos útiles, algunos bastante serios

Consejo útil 1: niégalo todo

Borra las huellas más rápido que los datos.
Y luego di con toda seguridad: «Eso fue una anomalía en los logs. Ya lo arreglé».

Haz como si fuera una feature.
«Decidimos hacer una prueba de estrés de tolerancia a fallos... Y sí, el sistema no aguantó. ¡Pero ahora sabemos qué mejorar!»

Declara evacuación: «Tenemos un incidente de nivel producción».
Cuando todos corren y entran en pánico, nadie tiene tiempo de preguntar quién fue el que pulsó DELETE FROM sin WHERE.

Actualiza tu currículum en hh.ru bajo el nombre DBA.
Ahora sí que estás más cerca de las bases de datos. Sobre todo de las que ya no existen.

Planea un coffee break de antemano.
Porque en unos minutos puede que te ofrezcan «descansar del proyecto... para siempre».

Haz como si fuera staging.
«¿Estás seguro de que no era el entorno de pruebas? Algo estábamos testeando... creo...»

Siéntate en el centro del open space.
Nadie va a creer que el culpable se atrevería a sentarse tan a la vista.

Culpa a ChatGPT.
Todo es culpa de la inteligencia artificial. Como ves, aún no está lista para reemplazarte. No me echéis, porfa.

Consejo útil 2: cómo buscar trabajo con la reputación tocada

  • Borra todas las tablas de golpe. Así la dirección estará demasiado ocupada como para despedir a alguien en persona.

  • Nadie responde solo. Si arrastras a tu jefe contigo, ya no habrá malas referencias.

  • ¿Borraste también los datos de los clientes? Felicidades, ahora la empresa tiene problemas más serios que tu despido.

Consejo útil 3: haz backup antes de borrar

Y ahora — sin bromas.

Antes de eliminar una tabla (sobre todo si tiene datos importantes), haz una copia de seguridad usando el comando pg_dump. Así podrás recuperar los datos si borras algo por accidente.

Ejemplo de comando para hacer backup:

pg_dump -U username -d database_name -t table_name > table_backup.sql

En este punto ya dominas lo básico del comando DROP TABLE. Guarda este "botón nuclear" para ti y úsalo solo cuando estés seguro de lo que haces. En la próxima lección seguiremos aprendiendo sobre cambios en la estructura de tablas y otros objetos de la base de datos.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION