Ir al contenido principal

Introducción a la sentencia ALTER TABLE en SQL

En este tutorial, aprenderás a usar y aplicar la sentencia ALTER TABLE en SQL.
Actualizado 17 sept 2026  · 7 min leer

Explorar con IA

ChatGPTClaudePerplexity

En SQL, hay tres tipos principales de comandos:

  • DDL, siglas de Data Definition Language (lenguaje de definición de datos). Incluye comandos SQL para definir la base de datos: crear tablas, establecer especificaciones, modificarlas, etc. Ejemplos de DDL: CREATE, DROP, ALTER, etc. Los cambios realizados con comandos DDL no se pueden deshacer con rollback.

  • DML, siglas de Data Manipulation Language (lenguaje de manipulación de datos). Permite ejecutar consultas de selección, inserción, actualización y borrado. Los cambios realizados con DML sí se pueden deshacer. Ejemplos: SELECT, INSERT, UPDATE y DELETE.

  • DCL, siglas de Data Control Language (lenguaje de control de datos). Permite especificar derechos, permisos y otros controles del sistema de base de datos.

En este tutorial verás cómo usar la sentencia ALTER TABLE, que pertenece a DDL. Trataremos lo siguiente:

  • La necesidad de la sentencia ALTER TABLE
  • Crear una tabla en una base de datos PostgreSQL
  • Ejecutar distintas sentencias ALTER TABLE en PostgreSQL

Nota: este tutorial no explica cómo crear una tabla, insertar datos o seleccionar datos en PostgreSQL. Si necesitas un repaso, consulta este artículo.

La necesidad de la sentencia ALTER TABLE

Las especificaciones de una base de datos pueden cambiar con el tiempo. Por ejemplo, puede que necesites añadir una columna a una tabla concreta o definir otra clave primaria. También podrías tener que cambiar el tipo de dato de una columna. No siempre puedes permitirte borrar una tabla y crearla de cero. La sentencia ALTER TABLE te permite hacer todo esto de forma sencilla. Con ALTER TABLE puedes:

  • Añadir, modificar o eliminar una columna
  • Añadir o eliminar una restricción

También puedes habilitar o deshabilitar restricciones, pero eso queda fuera del alcance de este tutorial.

Verás cada uno de estos casos de uso en este tutorial, pero antes necesitas una tabla en PostgreSQL para poder practicar. En la siguiente sección crearás una tabla sencilla.

Crear una tabla en una base de datos PostgreSQL

Vas a crear una tabla llamada student_details en PostgreSQL (usando la utilidad pgAdmin) con las siguientes columnas y tipos de datos:

  • student_id (integer)
  • student_full_name (character)
  • student_year (integer)

Empezarás con esta tabla con solo tres columnas. A medida que avances, añadirás más columnas y la modificarás de distintas formas. La siguiente consulta crea la tabla según las especificaciones anteriores:

CREATE TABLE student_details(
 student_id SERIAL,
 student_full_name VARCHAR (50),
 student_year VARCHAR (100)
);

Vamos a insertar también algunos registros:

  • INSERT INTO student_details(student_full_name, student_year) VALUES('John Doe','1st');
  • INSERT INTO student_details(student_full_name, student_year) VALUES('Chris Villa','3rd');

Como el tipo de dato de student_id es SERIAL, PostgreSQL incrementará automáticamente su valor y lo interpretará por defecto como integer.

La tabla student_details debería verse así:

Tabla student_details

Ya tienes una tabla en PostgreSQL. Veamos ahora diferentes aplicaciones de ALTER TABLE en la siguiente sección.

Ejecutar distintas sentencias ALTER TABLE en PostgreSQL

En esta sección verás cómo usar ALTER TABLE de las dos formas mencionadas:

  • Añadir, modificar y eliminar una columna
  • Añadir y eliminar una restricción

Añadir, modificar o eliminar una columna

Empecemos añadiendo una columna más llamada student_grade (de tipo carácter) a la tabla:

ALTER TABLE student_details ADD student_grade VARCHAR(5);

Ahora la tabla debería verse así:

Tabla student_details con la columna student_grade

Fíjate en que, para las filas ya existentes, los valores de la columna student_grade son null. Esto lo hacen de forma implícita la mayoría de los SGBDR. Siempre puedes ejecutar una actualización para fijar valores. Veamos ahora cómo modificar una columna con ALTER TABLE. Cambiaremos el tamaño máximo permitido de student_year de 100 a 10, porque reservar tanto espacio para tres caracteres (student_year puede ser 1st, 2nd o 3rd) no es muy práctico.

ALTER TABLE student_details ALTER COLUMN student_year TYPE VARCHAR(10);

El resultado se ve en la siguiente figura:

Tabla student_details con student_year (10)

También puedes renombrar una columna. Así:

ALTER TABLE student_details RENAME student_id TO student_roll;

La consulta anterior cambia el nombre de la columna student_id a student_roll. Puedes comprobarlo con una consulta SELECT; el resultado debería ser similar a la siguiente imagen:

Tabla student_details con la columna renombrada a student_roll

Veamos ahora cómo eliminar una columna de una tabla:

ALTER TABLE student_details DROP COLUMN student_year;

Esta consulta elimina la columna student_year y la tabla tras ejecutarla debería quedar así:

Tabla student_details tras eliminar la columna student_year

Ten en cuenta que, si la columna que eliminas está referenciada por otra tabla, podrías obtener errores de violación de integridad referencial.

Ahora veremos cómo añadir y eliminar restricciones en una tabla.

Añadir y eliminar una restricción.

La tabla student_details no tiene clave primaria. Una clave primaria combina las restricciones not null y unique. Vamos a especificar la columna student_roll (antes student_id) como clave primaria de student_details:

ALTER TABLE student_details ADD PRIMARY KEY (student_roll);

Puedes añadir otras restricciones. Por ejemplo, una restricción check sobre student_grade para que sus valores sean siempre A, B o C.

ALTER TABLE student_details ADD CONSTRAINT year_check CHECK (student_grade IN ('A', 'B', 'C'));

year_check es el nombre que asignas a la restricción que estás añadiendo. Si ahora intentas insertar la siguiente fila, deberías obtener un error:

INSERT INTO student_details(student_full_name, student_grade) VALUES('David Lune','3rd');

El error se vería así:

resultado de error

Eliminar una restricción es similar: debes indicar el nombre de la restricción que quieres quitar. Eliminemos la restricción llamada year_check:

ALTER TABLE student_details DROP CONSTRAINT year_check;

Verifiquémoslo. Si year_check se ha eliminado, entonces esta consulta INSERT INTO student_details(student_full_name, student_grade) VALUES('David Lune','3rd'); no debería provocar error. La tabla ahora contiene el registro:

tabla final

Puedes probar con otras restricciones check también.

¡Esto es todo por este tutorial!

Este tutorial te ha presentado la sentencia ALTER TABLE para modificar eficazmente el esquema de una tabla. Si quieres llevar tus habilidades de SQL al siguiente nivel, quizá te interesen estos cursos de DataCamp:

Temas
SQL

Cursos de SQL

Curso

Análisis exploratorio de datos en SQL

4 h
187.1K
Aprende a explorar lo que hay disponible en una base de datos: las tablas, las relaciones entre ellas y los datos almacenados en ellas.
Ver detallesRight Arrow
Iniciar Curso
Ver másRight Arrow
Relacionado

Tutorial

Ejemplos y tutoriales de consultas SQL

Si quiere iniciarse en SQL, nosotros le ayudamos. En este tutorial de SQL, le presentaremos las consultas SQL, una potente herramienta que nos permite trabajar con los datos almacenados en una base de datos. Verá cómo escribir consultas SQL, aprenderá sobre
Sejal Jaiswal's photo

Sejal Jaiswal

15 min

Tutorial

Seleccionar varias columnas en SQL

Aprende a seleccionar fácilmente varias columnas de una tabla de base de datos en SQL, o a seleccionar todas las columnas de una tabla en una simple consulta.
DataCamp Team's photo

DataCamp Team

3 min

Tutorial

Introducción a los disparadores SQL: Guía para desarrolladores

Aprende a utilizar los disparadores SQL para automatizar tareas, mantener la integridad de los datos y mejorar el rendimiento de la base de datos. Prueba ejemplos prácticos como los comandos CREATE, ALTER y DROP en MySQL y Oracle.
Oluseye Jeremiah's photo

Oluseye Jeremiah

13 min

Tutorial

Cómo utilizar un alias SQL para simplificar tus consultas

Explora cómo el uso de un alias SQL simplifica tanto los nombres de las columnas como los de las tablas. Aprende por qué utilizar un alias SQL es clave para mejorar la legibilidad y gestionar uniones complejas.
Allan Ouko's photo

Allan Ouko

9 min

SQLAlchemy_Tutorial.

Tutorial

Tutorial de SQLAlchemy con ejemplos

Aprende a acceder y ejecutar consultas SQL en todo tipo de bases de datos relacionales utilizando objetos Python.
Abid Ali Awan's photo

Abid Ali Awan

13 min

Tutorial

Cómo utilizar GROUP BY y HAVING en SQL

Una guía intuitiva para descubrir los dos comandos SQL más populares para agregar filas de tu conjunto de datos
Eugenia Anello's photo

Eugenia Anello

6 min

Ver MásVer Más