Una vez que ya tenemos creadas las tablas en Oracle de nuestro modelo de datos se producen constantes cambios en la vida de este, modificación de columnas, adición de nuevas columnas, borrado de columnas obsoletas, etc.
El estamento Oracle que vamos a utilizar para el mantenimiento de tablas en Oracle:
ALTER TABLE esquema.nombre_tabla clausulas [ADD|DROP|MODIFY]
Vamos a crear la tabla clientes como ejemplo para poder realizar las practicas.
CREATE TABLE factura.clientes
(
codcliente number(10) NOT NULL,
cif varchar2(20),
nombre varchar2(100),
direccion varchar2(100)
)
TABLESPACE DATOS01;
Añadir columnas de tablas en Oracle.
Para añadir una o varias columnas a una tabla usaremos la cláusula ADD, vamos a añadir las columnas telefono y fax de tipo de dato VARCAHR2(), desde sqlplus ejecutamos lo siguiente:
ALTER TABLE factura.clientes ADD (telefono VARCHAR2(9), fax VARCHAR2(9));
También sería valida esta otra forma en dos ALTER TABLE,
ALTER TABLE factura.clientes
ADD telefono VARCHAR2(9);
ALTER TABLE factura.clientes
ADD fax VARCHAR2(9);
Si hacemos un desc de la tabla clientes veremos como queda después de añadir las dos columnas:
SQL> desc clientes
Name Null? Type
----------------------------------- ------ -----------------------------------
CODCLIENTE NOT NULL NUMBER(10)
CIF VARCHAR2(20)
NOMBRE VARCHAR2(100)
DIRECCION VARCHAR2(100)
TELEFONO VARCHAR2(9)
FAX VARCHAR2(9)
Eliminar columnas de tablas en Oracle.
Para eliminar una o varias columnas de una tabla usaremos la cláusula DROP, aunque parece claro pero tener el borrado de una columna implica la perdida de la información contenida en la columna para todas las filas de la tabla, esta operación no permite rollback. Vamos a borrar las dos columnas que hemos añadido anteriormente, desde sqlplus ejecutamos lo siguiente:
ALTER TABLE factura.clientes DROP (telefono, fax);
También sería valida con dos ALTER TABLE,
ALTER TABLE clientes
DROP (telefono);
ALTER TABLE clientes
DROP (fax);
Modificar columnas de tablas en Oracle.
Para modificar un o varias columnas de una tabla usaremos la cláusula MODIFY, con esta cláusula podremos modificar las características de la columna, cambio de tipo de dato, constraint de null a not null, etc. Si realizamos un cambio de tipo de dato hay que tener cuidado con las conversiones, truncados y posible pedida de información, al igual que la cláusula DROP no permite rollback. Vamos a cambiar el tipo de datos de la columna telefono y fax al tipo de dato NUMBER(9), desde sqlplus ejecutamos lo siguiente:
ALTER TABLE clientes MODIFY (telefono NUMBER(9), fax NUMBER(9));
También sería valida con dos ALTER TABLE,
ALTER TABLE clientes
MODIFY (telefono NUMBER(9));
ALTER TABLE clientes
MODIFY (fax NUMBER(9));
La tabla clientes quad así:
SQL> desc clientes
Name Null? Type
----------------------------------------- -------- ----------------------------
CODCLIENTE NOT NULL NUMBER(10)
CIF VARCHAR2(20)
NOMBRE VARCHAR2(100)
DIRECCION VARCHAR2(100)
TELEFONO NUMBER(9)
FAX NUMBER(9)