Estructura · cambios de esquema

ALTER TABLE

Modifica la definición de una tabla existente: columnas, nombres y restricciones, según las operaciones que admita cada motor.

Lectura: 5–7 minEjemplo comprobadoCompatibilidad por motor
Contenido de esta guía

Qué puede cambiar ALTER TABLE

ALTER TABLE actúa sobre una tabla que ya existe. Según el motor, permite añadir o eliminar columnas, renombrar objetos, cambiar tipos y valores predeterminados, o gestionar restricciones.

No existe una única lista de operaciones idéntica en todos los motores. La palabra inicial es común, pero la sintaxis, los bloqueos y la forma de reescribir datos pueden cambiar de manera importante.

Patrones habituales

Ejemplos orientativos
ALTER TABLE clientes ADD COLUMN telefono VARCHAR(30);
ALTER TABLE clientes RENAME COLUMN telefono TO movil;
ALTER TABLE clientes DROP COLUMN movil;

No ejecutes una lista como esta de forma ciega. Comprueba una operación cada vez en la documentación y versión de tu base de datos.

Ejemplo guiado: añadir una columna

SQL comprobado
CREATE TABLE clientes_demo (
  id INTEGER PRIMARY KEY,
  nombre TEXT NOT NULL
);

INSERT INTO clientes_demo (id, nombre)
VALUES (1, 'Ana'), (2, 'Luis');

ALTER TABLE clientes_demo
ADD COLUMN activo INTEGER NOT NULL DEFAULT 1;

SELECT id, nombre, activo
FROM clientes_demo
ORDER BY id;
Resultado comprobado en SQLite
idnombreactivo
1Ana1
2Luis1

La columna nueva tiene un valor predeterminado válido para las filas existentes. Las reglas exactas para columnas obligatorias dependen del motor y de la operación.

Un cambio breve en SQL no siempre es barato. En tablas grandes, ciertas modificaciones pueden leer o reescribir muchos datos, crear bloqueos o necesitar espacio adicional. Evalúa el plan y prueba con una copia representativa.

Secuencia de trabajo segura

  1. confirma la sintaxis de la versión real;
  2. revisa vistas, índices, restricciones y aplicaciones dependientes;
  3. crea una copia de seguridad y ensaya la recuperación;
  4. prueba el cambio con datos representativos;
  5. define cómo revertirlo si la validación falla;
  6. comprueba datos y consultas después de aplicarlo.

Error frecuente

Copiar una variante de otro motor

Expresiones como ALTER COLUMN, MODIFY COLUMN o determinadas formas de ADD CONSTRAINT no son intercambiables. SQLite, por ejemplo, ofrece un conjunto directo más limitado que otros motores y para algunos cambios exige reconstruir la tabla.

Tampoco asumas que una operación DDL puede revertirse de la misma forma en todos los sistemas.

Comprueba lo aprendido

Básica · cambio no destructivo

Añade un dato opcional

La tabla proveedores ya contiene id y nombre. Añade una columna telefono que acepte hasta 30 caracteres y pueda quedar vacía.

Compatibilidad entre motores

PostgreSQL, MySQL, SQL Server y Oracle disponen de familias amplias de operaciones, con sintaxis y efectos propios. SQLite admite renombrar tablas y columnas, añadir y eliminar columnas y, desde SQLite 3.53.0, también añadir o quitar restricciones NOT NULL y CHECK mediante ALTER TABLE ... ALTER COLUMN. Sigue sin ofrecer todas las transformaciones de otros motores; para cambios no soportados, su documentación recomienda crear una tabla nueva, copiar los datos y sustituir la anterior.

Qué debes recordar

  • ALTER TABLE cambia un esquema que ya puede contener datos.
  • La sintaxis concreta depende del motor y de la versión.
  • Un cambio pequeño puede ser costoso o bloquear operaciones.
  • Prueba, respalda y prepara una reversión antes de producción.

Antes de ampliar un VARCHAR para resolver un error, confirma qué valor excede el límite y si el cambio de esquema es realmente correcto: cómo diagnosticar un valor demasiado largo para VARCHAR.

Conceptos relacionados

Fuentes técnicas consultadas