Estructura · elegir la operación

ADD COLUMN vs modificar una columna

Distingue cuándo crear una columna y cuándo redefinir una existente, con la sintaxis real de cada motor.

Lectura: 7–9 minComparativa de dialectosPráctica de decisión
Contenido de esta guía

La diferencia esencial

ADD COLUMN crea un atributo que no existía. MODIFY COLUMN o ALTER COLUMN cambia la definición de una columna existente: tipo, longitud, nulabilidad, valor predeterminado u otras propiedades permitidas.

La segunda familia no tiene una sintaxis universal. MODIFY COLUMN es propia de MySQL y otros dialectos; PostgreSQL y SQL Server utilizan variantes de ALTER COLUMN.

Cómo elegir

PreguntaOperaciónEjemplo
¿La columna no existe?ADD COLUMNAñadir peso_kg
¿Existe y cambia el tipo?ALTER/MODIFY COLUMNprecio pasa a mayor precisión
¿Solo cambia el nombre?Renombrado específicotelefono pasa a movil
¿Quieres cambiar valores?UPDATECompletar teléfonos vacíos

Ejemplo 1: añadir una columna

Sintaxis ampliamente reconocible
ALTER TABLE productos
ADD COLUMN peso_kg DECIMAL(6,2);

La tabla obtiene una nueva columna. Las filas anteriores tendrán NULL cuando no se haya declarado un valor predeterminado compatible. Añadir la columna no convierte ni reemplaza otra.

Resultado comprobado al añadir peso_kg
Filas de productosFilas con peso_kg IS NULLColumnas anteriores
99Sin cambios

El resultado confirma que ADD COLUMN amplía el esquema sin inventar datos. Si necesitas que la columna sea obligatoria, primero rellena valores válidos y después aplica la restricción con la sintaxis de tu motor.

Ejemplo 2: cambiar una columna existente

PostgreSQL
ALTER TABLE productos
ALTER COLUMN precio TYPE NUMERIC(12,2);
MySQL 8.4
ALTER TABLE productos
MODIFY COLUMN precio DECIMAL(12,2) NOT NULL;
SQL Server
ALTER TABLE productos
ALTER COLUMN precio DECIMAL(12,2) NOT NULL;

Las tres sentencias expresan una intención parecida, pero no son intercambiables. En MySQL, la definición escrita en MODIFY COLUMN debe conservar propiedades que quieras mantener, como NOT NULL. PostgreSQL puede necesitar una cláusula USING si los valores no tienen una conversión implícita adecuada.

Qué ocurre en SQLite

SQLite admite directamente ADD COLUMN, renombrados y DROP COLUMN. Desde SQLite 3.53.0, publicada el 9 de abril de 2026, también admite ALTER TABLE ... ALTER COLUMN ... SET/DROP NOT NULL. Sigue sin existir una orden genérica para cambiar arbitrariamente el tipo y todas las propiedades de una columna. El laboratorio del sitio comprueba ADD COLUMN; para transformaciones no admitidas, aplica el procedimiento documentado de crear una tabla nueva, copiar los datos, validar y sustituir la anterior.

Errores frecuentes

Tratar MODIFY como si solo indicara el fragmento que cambia

En MySQL, escribir de nuevo la definición puede modificar accidentalmente nulabilidad u otras propiedades si se omiten. Revisa la definición actual antes de ejecutar la sentencia.

Otro error es cambiar a un tipo más estrecho sin comprobar datos. La operación puede fallar, truncar según la configuración o necesitar una copia costosa de la tabla.

Comprueba lo aprendido

Intermedia · decisión y verificación

Distingue creación de redefinición

Debes A) incorporar descripcion, que no existe, y B) ampliar nombre, que ya existe. Escribe una solución para MySQL y explica qué comprobarías después de cada cambio.

Antes de cambiar un tipo

  1. Busca el valor mínimo, máximo y los formatos existentes.
  2. Comprueba valores que no se pueden convertir.
  3. Revisa índices, claves, vistas y código dependiente.
  4. Estima si el motor copiará o reescribirá la tabla.
  5. Prueba la migración y su reversión con una copia representativa.

Compatibilidad entre motores

La adición de columnas está disponible en los motores principales, aunque cambian restricciones y valores predeterminados permitidos. Para modificar definiciones, PostgreSQL usa ALTER COLUMN con subórdenes como TYPE; MySQL utiliza MODIFY COLUMN o CHANGE COLUMN; SQL Server usa ALTER COLUMN. SQLite mantiene un conjunto más limitado para cambios directos. No publiques una sentencia genérica sin indicar el dialecto.

Qué debes recordar

  • ADD COLUMN crea; ALTER/MODIFY COLUMN redefine.
  • Modificar datos corresponde a UPDATE, no a ALTER TABLE.
  • La sintaxis de modificación cambia mucho entre motores.
  • Revisa datos y coste antes de cambiar tipos o nulabilidad.

Conceptos relacionados

Fuentes técnicas consultadas