Al terminar, podrás
- Planificar el efecto de una columna nueva.
- Añadir columnas opcionales o con DEFAULT.
- Reconocer cuándo una migración necesita varios pasos.
Recupera lo aprendido: ¿Qué restricción utilizarías para que una columna no pueda quedar sin valor?
La idea clave
ALTER TABLE cambia una estructura que ya puede contener datos. Antes de ejecutarlo debes decidir qué ocurrirá con las filas existentes, las restricciones, los índices y el código que usa esa tabla.
Primero, inventaria las dependencias: un cambio de nombre o tipo puede romper consultas, vistas, formularios y procesos externos aunque la sentencia SQL sea válida.
La sintaxis básica
ALTER TABLE tabla
ADD COLUMN columna tipo;ALTER TABLE tabla
ADD COLUMN columna tipo DEFAULT valor;Ejemplo paso a paso
Añadiremos un teléfono opcional a clientes. Al no declarar NOT NULL ni un valor predeterminado, las filas existentes reciben NULL.
ALTER TABLE clientes
ADD COLUMN telefono TEXT;
SELECT id, nombre, telefono
FROM clientes
WHERE id IN (1, 2)
ORDER BY id;| id | nombre | telefono |
|---|---|---|
| 1 | Ana Torres | NULL |
| 2 | Luis Martín | NULL |
Cómo funciona
- La tabla conserva sus filas y columnas anteriores.
- La nueva columna aparece al final de la estructura en SQLite.
- Los valores existentes quedan en NULL hasta que se actualicen.
Un error habitual
Añadir una columna obligatoria sin estrategia para los datos existentes
ALTER TABLE clientes
ADD COLUMN telefono TEXT NOT NULL;Una tabla con filas existentes no puede inventar teléfonos válidos. Según el motor, la sentencia fallará o exigirá un valor predeterminado. Suele ser más seguro añadirla como opcional, rellenar datos, validar y después endurecer la regla si el motor lo permite.
Practica con datos
Laboratorio SQL
Resuelve la consulta
Escribe la sentencia SQL que añada a productos una columna activo de tipo INTEGER con valor predeterminado 1.
Resultado esperado: una columna llamada activo, de tipo INTEGER y con DEFAULT 1.
Ver tablas y datos
Cargando la estructura del ejercicio…
Utiliza ADD COLUMN.
Declara el tipo INTEGER.
Añade DEFAULT 1.
Solución
ALTER TABLE productos ADD COLUMN activo INTEGER DEFAULT 1;El valor predeterminado define qué ocurre con nuevas filas y, según el motor, con filas existentes.
Puedes consultar la solución y volver a intentarlo. La práctica se completa cuando tu consulta funciona.
La consulta usa datos ficticios y se ejecuta solo en este navegador.
Fuentes técnicas consultadas
Las operaciones disponibles y su coste varían entre motores. SQLite ofrece un conjunto más reducido de cambios directos; PostgreSQL y MySQL documentan opciones adicionales que pueden validar o reescribir datos. La lección utiliza ADD COLUMN como base portable.
- PostgreSQL: modificar tablas
- PostgreSQL: ALTER TABLE
- SQLite: ALTER TABLE
- MySQL 8.4: ALTER TABLE
- SQL Server: ALTER TABLE
Comprueba si puedes explicarlo
Una tabla ya tiene filas. ¿Qué debes decidir antes de añadir una columna obligatoria?
Ver respuesta razonada
Cómo dar a cada fila existente un valor válido. Un DEFAULT solo sirve si expresa una regla real. Otra estrategia es añadir la columna opcional, rellenarla y después exigirla.
Responde antes de abrir la explicación. Si necesitaste ayuda, cierra la respuesta y vuelve a explicarlo con tus palabras antes de dar la lección por aprendida.
Qué debes recordar
- ALTER TABLE actúa sobre datos y dependencias existentes.
- Planifica el valor inicial de una columna nueva.
- Prueba la migración y su reversión en una copia antes de producción.
A continuación: estudia cuándo un índice puede mejorar una consulta.