Es posible que después de crear una tabla nos demos cuenta que se nos ha olvidado añadir algún campo o restricción, quizás alguna de las restricciones que añadimos ya no es necesaria o tal vez queramos cambiar el nombre de alguno de los campos. ¿Es posible esto? Ahora veremos que sí y en casi todos los casos utilizaremos el comando ALTER TABLE.
- Si queremos cambiar el nombre de una tabla:
RENAME NombreViejo TO NombreNuevo;
- Si queremos añadir columnas a una tabla: las columnas se añadirán al final de la tabla.
ALTER TABLE NombreTabla ADD
( ColumnaNueva1 Tipo_Datos [Propiedades]
[, ColumnaNueva2 Tipo_Datos [Propiedades]
... );
- Si queremos eliminar columnas de una tabla: se eliminará la columna indicada sin poder deshacer esta acción. Además de la definición de la columna, se eliminarán todos los datos que contuviera. No se puede eliminar una columna si es la única que forma la tabla, para ello tendremos que borrar la tabla directamente.
ALTER TABLE NombreTabla DROP COLUMN (Columna1 [, Columna2, ...]);
- Si queremos modificar columnas de una tabla: podemos modificar el tipo de datos y las propiedades de una columna. Todos los cambios son posibles si la tabla no contiene datos. En general, si la tabla no está vacía podremos aumentar la longitud de una columna, aumentar o disminuir en número de posiciones decimales en un tipo NUMBER, reducir la anchura siempre que los datos no ocupen todo el espacio reservado para ellos.
ALTER TABLE NombreTabla MODIFY
(Columna1 TipoDatos [propiedades] [, columna2 TipoDatos [propiedades] ...] );
- Si queremos renombrar columnas de una tabla:
ALTER TABLE NombreTabla RENAME COLUMN NombreAntiguo TO NombreNuevo;
Tenemos la siguiente tabla creada:
CREATE TABLE USUARIOS (
Credito NUMBER(4) CHECK (Crédito BETWEEN 0 AND 2000));
Nos gustaría incluir una nueva columna llamada User que será tipo texto y clave primaria:
ALTER TABLE USUARIO ADD
(User VARCHAR(10) PRIMARY KEY);
Nos damos cuenta que ese campo se llamaba Login y no User, vamos a cambiarlo:
ALTER TABLE USUARIO RENAME COLUMN User TO Login;