Estructura · evolución segura

Modificar la estructura de una tabla

Distingue cambios de esquema y de datos, revisa dependencias y aplica ALTER TABLE en pasos comprobables.

Lectura: 7–9 minEjemplo ejecutadoPlan de cambio
Contenido de esta guía

Qué significa modificar una estructura

Modificar la estructura de una tabla cambia su definición: columnas, tipos, valores predeterminados, restricciones o nombre. Es una operación distinta de UPDATE, que cambia los valores almacenados en filas existentes.

ALTER TABLE permite evolucionar un esquema sin borrar la tabla, pero el cambio puede afectar datos, índices, vistas, claves foráneas y código de la aplicación.

Antes de escribir la sentencia

  1. Describe el estado actual y el estado deseado.
  2. Busca consultas, vistas, restricciones e índices que dependan de la columna.
  3. Comprueba si los datos existentes cumplen la nueva regla.
  4. Revisa la sintaxis y el coste en la versión concreta del motor.
  5. Prepara copia de seguridad, prueba y reversión.

Operaciones habituales

NecesidadFamilia de operaciónRiesgo principal
Añadir un dato nuevoADD COLUMNValores iniciales y restricciones
Cambiar tipo o nulabilidadALTER/MODIFY COLUMNConversión, escaneo o reescritura
Eliminar un datoDROP COLUMNPérdida y dependencias
RenombrarRENAME o herramienta específicaCódigo que conserva el nombre anterior
Añadir una reglaADD CONSTRAINTFilas antiguas que la incumplen

Ejemplo guiado: añadir un dato opcional

Añadir teléfono a clientes
ALTER TABLE clientes
ADD COLUMN telefono VARCHAR(30);

La operación crea la columna al final de la definición. Como no se declara NOT NULL ni un DEFAULT, las filas existentes reciben NULL. Esto permite incorporar la estructura primero y completar los datos después.

Esquema conceptual después del cambio
columnatipovalor en filas existentes
idINTEGERsin cambios
nombreTEXTsin cambios
telefonoVARCHAR(30)NULL

La sentencia se comprobó en SQLite con el esquema educativo. En producción, verifica además permisos, bloqueos, dependencias y forma de despliegue.

Verificación en SQLite
PRAGMA table_info(clientes);
Fila relevante del esquema después del cambio
nametypenotnulldflt_value
telefonoVARCHAR(30)0NULL

Verificar el esquema evita dar por terminado un despliegue solo porque la sentencia no mostró un error. Comprueba también una muestra de filas y los objetos dependientes.

Una secuencia de cambio segura

Expandir, migrar y restringir suele ser más seguro que imponer todo en una sola sentencia: añade una columna compatible, adapta la aplicación, completa datos en lotes y solo después aplica NOT NULL o restricciones.

Esta secuencia reduce el intervalo en que una aplicación antigua y una estructura nueva son incompatibles. No todos los motores permiten revertir DDL del mismo modo; una transacción no sustituye a una copia de seguridad ni a un plan de retorno.

Errores frecuentes

Añadir una regla que las filas existentes no pueden cumplir

Una columna NOT NULL sin valor compatible puede fallar cuando la tabla ya contiene filas. Una restricción CHECK o una conversión de tipo también puede exigir revisar todos los datos.

Otro error es copiar la sintaxis de otro motor: PostgreSQL usa ALTER COLUMN ... TYPE, MySQL utiliza MODIFY COLUMN para muchas modificaciones y SQL Server usa ALTER COLUMN.

Comprueba lo aprendido

Intermedia · migración por fases

Añade un código postal sin bloquear datos antiguos

La tabla clientes necesita codigo_postal de hasta 12 caracteres. Las filas antiguas aún no tienen ese dato, pero el objetivo final es que sea obligatorio. Propón las tres fases del cambio.

Compatibilidad entre motores

PostgreSQL documenta una familia amplia para añadir, eliminar, renombrar y cambiar columnas y restricciones. SQL Server también modifica columnas y restricciones, con variantes según el tipo de tabla. SQLite admite directamente renombrar tablas o columnas, añadir y eliminar columnas y, desde la versión 3.53.0, establecer o retirar NOT NULL con ALTER COLUMN. Para otros cambios arbitrarios sigue documentando el procedimiento de crear una tabla nueva, copiar los datos y sustituir la anterior. Comprueba siempre la versión, porque las capacidades evolucionan.

Qué debes recordar

  • DDL cambia la definición; DML cambia las filas.
  • Un cambio de esquema puede afectar objetos y aplicaciones dependientes.
  • Primero comprueba los datos existentes y el coste real.
  • Divide los cambios incompatibles en fases.

Conceptos relacionados

Fuentes técnicas consultadas