Resumen

Cuando una base de datos ya está en producción, eliminar y recrear tablas no es una opción viable. ALTER TABLE es el comando que permite modificar tablas existentes sin perder los datos que ya contienen. Agregar columnas, cambiar tipos de dato, renombrar campos o gestionar restricciones son operaciones cotidianas que todo profesional de bases de datos necesita dominar con precisión y responsabilidad.

¿Cómo agregar nuevas columnas con ALTER TABLE?

La sintaxis parte siempre de la misma base: ALTER TABLE seguido del nombre de la tabla y la acción a realizar. Para agregar una columna se utiliza la cláusula ADD COLUMN [01:20].

sql ALTER TABLE empleados_demo ADD COLUMN email TEXT;

Este patrón se repite cada vez que se necesita incorporar un campo nuevo. Por ejemplo, para agregar una fecha de ingreso con un valor por defecto:

sql ALTER TABLE empleados_demo ADD COLUMN fecha_ingreso DATE NOT NULL DEFAULT CURRENT_DATE;

También es posible agregar columnas de tipo booleano con restricciones incluidas [02:30]:

sql ALTER TABLE empleados_demo ADD COLUMN activo BOOLEAN NOT NULL DEFAULT TRUE;

Para verificar que los cambios se aplicaron correctamente, se consulta la tabla information_schema.columns, seleccionando el nombre de columna, tipo de dato y valor por defecto [03:05].

¿Cómo cambiar el tipo de dato de una columna existente?

Cuando un campo se creó con un tipo de dato incorrecto, ALTER COLUMN junto con TYPE permite corregirlo sin eliminar la columna [04:00]. La diferencia importante es que aquí no se usa ADD, sino ALTER:

sql ALTER TABLE empleados_demo ALTER COLUMN email TYPE VARCHAR(100);

En este ejemplo, el campo email pasa de tipo TEXT a VARCHAR, que significa character varying o variación de caracteres. VARCHAR permite definir una longitud máxima específica, algo que TEXT no restringe.

¿Se pueden modificar las restricciones de una columna?

Las restricciones o constraints también se pueden alterar. Si un campo fue creado sin la restricción NOT NULL y posteriormente se requiere agregarla, ALTER TABLE lo resuelve [05:15].

De igual forma, es posible eliminar una restricción existente con DROP NOT NULL:

sql ALTER TABLE empleados_demo ALTER COLUMN email DROP NOT NULL;

¿Cómo renombrar columnas y agregar constraints con ALTER?

Para renombrar una columna se utiliza RENAME COLUMN [05:50]. La sintaxis indica el nombre actual y el nuevo nombre separados por la palabra clave TO:

sql ALTER TABLE empleados_demo RENAME COLUMN cargo TO puesto;

El campo deja de llamarse cargo y pasa a llamarse puesto de forma inmediata.

Agregar restricciones con nombre propio se logra mediante ADD CONSTRAINT [06:30]. Esto es útil para aplicar reglas como UNIQUE a campos que no las tenían al momento de su creación:

sql ALTER TABLE empleados_demo ADD CONSTRAINT email_unico UNIQUE (email);

Aquí se crea una restricción llamada email_unico que impide valores duplicados en el campo email. Darle un nombre descriptivo a cada constraint facilita su administración posterior.

¿Qué precauciones tomar al eliminar elementos con DROP?

La palabra clave DROP dentro de ALTER TABLE es irreversible [07:20]. No existe un "Control Z" en SQL. Se puede eliminar tanto una restricción como una columna completa:

  • Eliminar una restricción: DROP CONSTRAINT email_unico.
  • Eliminar una columna: DROP COLUMN activo.

sql ALTER TABLE empleados_demo DROP COLUMN activo;

Cada operación DROP borra datos y definiciones de forma permanente, por lo que debe ejecutarse con extrema precaución en entornos productivos.

¿Es posible renombrar una tabla completa?

ALTER TABLE también permite cambiar el nombre de la tabla en sí misma [08:30]:

sql ALTER TABLE empleados_demo RENAME TO empleados_v2;

Esta capacidad resulta práctica durante migraciones o reorganizaciones del esquema de base de datos.

En resumen operativo, ALTER TABLE soporta estas acciones principales:

  • ADD COLUMN: agregar nuevas columnas.
  • ALTER COLUMN ... TYPE: cambiar tipos de dato.
  • ALTER COLUMN ... SET/DROP NOT NULL: modificar restricciones de nulidad.
  • ADD CONSTRAINT: agregar restricciones con nombre.
  • DROP CONSTRAINT: eliminar restricciones.
  • DROP COLUMN: eliminar columnas (irreversible).
  • RENAME COLUMN: renombrar campos.
  • RENAME TO: renombrar la tabla.

El desafío propuesto es ejecutar tres operaciones sobre una tabla de clientes: agregar una columna fecha_nacimiento de tipo DATE, renombrarla a nacimiento y finalmente eliminarla con DROP COLUMN. Comparte tu resultado en los comentarios.