Sentencia ALTER TABLE en SQL

ALTER TABLE es la sentencia SQL para para añadir, eliminar o modificar columnas en una tabla, así como para agregar o suprimir restricciones en la misma.

A continuación, veremos con sencillos ejemplos sobre la tabla Clientes utilizada de ejemplo en la sección CREATE TABLE, cómo utilizar la sentencia ALTER TABLE para modificar nuestras bases de datos.

Sentencia ADD

ADD nos permite agregar nuevas columnas y restricciones a una tabla dentro de una instrucción ALTER TABLE.

La sentencia sigue de la siguiente sintaxis:

ALTER TABLE `nombreTabla` ADD `nuevaColumna` tipoDato [CONSTRAINT]

Agregar columnas (ADD columnas)

ADD nuevaColumna permite agregar nuevas columnas especificando el tipo de dato del nuevo/s campo/s. Como veremos más adelante, al definir la nueva columna podemos especificar también las propiedades y restricciones aplicables.

Para nuestro ejemplo, puedes escribir lo siguiente para agregar una nueva columna, en nuestra tabla Clientes, llamada documentoIdentidad que no admita valores nulos:

ALTER TABLE Clientes
ADD documentoIdentidad VARCHAR (20) NOT NULL;

En el caso que quisiéramos agregar más de una columna a una tabla, podemos hacerlo desde una sola sentencia. Para nuestro ejemplo, puedes escribir lo siguiente para agregar las siguientes nuevas columnas: documentoIdentidad, nacionalidad y fechaRegistro:

ALTER TABLE Clientes
ADD documentoIdentidad VARCHAR (20) NOT NULL,
    nacionalidad VARCHAR (50),
    fechaRegistro DATE;

Agregar restricciones (ADD CONSTRAINT)

ADD CONSTRAINT nuevaRestriccion permite añadir nuevas restricciones (como una Primary key o indices) a las columnas de una tabla ya existente.

La sentencia sigue la siguiente sintaxis:

ALTER TABLE nombreTabla ADD CONSTRAINT nuevaRestricción

El siguiente ejemplo añade una restricción UNIQUE a la columna: documentoIdentidad

ALTER TABLE Clientes
ADD CONSTRAINT uq_clientes_documentoIdentidad
    UNIQUE (documentoIdentidad);

También es posible añadir una columna y una restricción en la misma sentencia como vemos en el siguiente ejemplo a continuación:

ALTER TABLE Clientes
ADD documentoIdentidad VARCHAR (20),
CONSTRAINT uq_clientes_documentoIdentidad
    UNIQUE (documentoIdentidad);

Sentencia DROP

DROP dentro de una sentencia ALTER TABLE permite eliminar columnas y restricciones de una tabla.

La sentencia sigue la siguiente sintaxis:

ALTER TABLE nombreTabla DROP [COLUMN nombreColumna][CONSTRAINT nombreRestriccion]

Eliminar columnas (DROP COLUMN)

DROP COLUMN nombreColumna elimina las columnas especificadas de una tabla.

En el siguiente ejemplo procedemos a eliminar la columna direccion de la tabla Clientes:

ALTER TABLE Clientes
DROP COLUMN direccion;

Podemos además, eliminar más de una columna desde una sola sentencia. El siguiente ejemplo procede a eliminar las columnas nacionalidad y fechaRegistro de la tabla Clientes:

ALTER TABLE Clientes
DROP COLUMN nacionalidad,
            fechaRegistro;

Eliminar restricciones (DROP CONSTRAINT)

DROP CONSTRAINT nombreRestriccion permite eliminar restricciones de las columnas de una tabla.

La sentencia sigue la siguiente sintaxis:

ALTER TABLE nombreTabla DROP CONSTRAINT nombreRestricción

El siguiente ejemplo elimina la restricción UNIQUE: uq_clientes_documentoIdentidad aplicada a la columna: documentoIdentidad.

ALTER TABLE Clientes
DROP CONSTRAINT uq_clientes_documentoIdentidad;

La sentencia ALTER

ALTER COLUMN dentro de una sentencia ALTER TABLE permite modificar las columnas de una tabla.

Modificar columnas (ALTER COLUMN)

La sentencia sigue la siguiente sintaxis:

ALTER TABLE nombreTabla ALTER COLUMN nombreColumna tipoDato

El siguiente ejemplo modifica el tipo de dato INT de la columna cuenta, cambiándolo a VARCHAR(30):

ALTER TABLE Clientes
ALTER COLUMN cuenta VARCHAR (30);

No es posible alterar restricciones. En el caso de querer modificar una restricción de una columna, debemos primero eliminarla DROP CONSTRAINT y posteriormente ejecutar una nueva sentencia ADD CONSTRAINT para crearla con las modificaciones deseadas.