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.