Si ejecutas un comando DROP COLUMN dentro de una sentencia ALTER TABLE, los datos de esa columna desaparecen de forma definitiva para todos los registros de la tabla.
Aquí tienes los detalles de lo que sucede técnicamente según el funcionamiento del DDL en SQL:
1. Eliminación Irreversible
Al eliminar una columna, no solo borras el «encabezado» o el nombre de la columna en la estructura; borras físicamente (o lógicamente, dependiendo del gestor) el contenido de cada celda de esa columna en todas las filas existentes.
- Sin marcha atrás: A diferencia de una hoja de cálculo donde puedes deshacer la acción, en SQL, una vez ejecutado el
COMMITde esa transacción DDL, los datos no se pueden recuperar a menos que tengas una copia de seguridad (backup).
2. Actualización del Diccionario de Datos
El comando DROP COLUMN modifica el Diccionario de Datos del sistema. El SGBD actualiza sus tablas internas para indicar que esa columna ya no existe, por lo que cualquier consulta posterior (SELECT *) ya no la mostrará.
3. Impacto en otros objetos (Dependencias)
Un punto crítico que suele mencionar el análisis de SQL es el efecto dominó. Si borras una columna:
- Vistas: Las vistas que dependían de esa columna darán error al consultarse.
- Índices: Si la columna formaba parte de un índice, el índice generalmente se elimina o queda invalidado.
- Restricciones: Si la columna era parte de una clave foránea (
FOREIGN KEY), el sistema podría impedirte borrarla hasta que elimines primero la restricción de integridad.
4. Liberación de Espacio
Dependiendo del motor de base de datos (como Oracle o SQL Server), el espacio en disco que ocupaban esos datos puede no liberarse inmediatamente. A veces el sistema simplemente marca la columna como «no disponible» y el espacio se recupera más tarde mediante procesos de reorganización o compactación.
Diferencia con poner a NULL
Es importante no confundirlo con un UPDATE tabla SET columna = NULL.
- Con UPDATE, la columna sigue existiendo en la estructura, pero está vacía.
- Con DROP COLUMN, la columna deja de existir legalmente en el esquema de la base de datos.