HTMLpointHTMLpoint HTMLpoint.com


 Modificar la estructura de la base de datos



En el curso de la lección anterior, se ha visto cómo modificar los datos ya presentes en la base de datos. A veces, sin embargo, no basta con modificar los datos, sino que es necesario actualizar la estructura misma de la base de datos para conseguir que se puedan representar nuevas informaciones. Desde el momento en que la estructura de la base de datos se da sustancialmente por la unión de las tablas que la componen, su actualización corresponde a la eliminación de tablas o al cambio de sus características.
Para eliminar una tabla de una base de datos la orden SQL que hay que usar es DROP TABLE:

DROP TABLE nombre_tabla { RESTRICT | CASCADE }

nombre_tabla es el nombre de la tabla que tiene que se eliminada.
Si se especifica la cláusula CASCADE, se eliminan automáticamente los vínculos de integridad y las vistas (view) en que la tabla está implicada. Y viceversa: si se especifica la cláusula RESTRICT y existen vínculos de integridad o vistas que se refieran a la tabla, la operación fracasa.
Por ejemplo, se han definido las dos siguientes tablas:

CREATE TABLE Prueba1 (
Id INTEGER PRIMARY KEY,
Nombre VARCHAR(50))

CREATE TABLE Prueba2 (
Id INTEGER PRIMARY KEY,
Nombre VARCHAR(50),
toPrueba1 INTEGER REFERENCES Prueba1(Id))


Si se quiere eliminar la tabla Prueba1, la instrucción:

DROP TABLE Prueba1 RESTRICT

fracasará desde el momento en que existe un vínculo de integridad que liga una llave externa de la tabla Prueba2 con la tabla Prueba1.
Sin embargo, la instrucción:

DROP TABLE Prueba1 CASCADE

se ejecutará con éxito y producirá también la eliminación del vínculo de integridad referencial presente en la tabla Prueba2.

En el caso en que se quiera modificar una tabla existente en la base de datos, la instrucción que se tiene que usar es ALTER TABLE. Desde el momento en que la sintaxis de esta instrucción resulta más bien complicada, se explicará descomponiéndola de acuerdo a las funciones que se quieren obtener:

Adición de una nueva columna a la tabla

ALTER TABLE nombre_tabla ADD [ COLUMN ] definición_columna

nombre_tabla es el nombre de la tabla que se quiere modificar.
La definición de la columna sigue la misma sintaxis que se ha visto en la lección "Crear la base de datos" en la explicación de la instrucción CREATE TABLE. Por lo tanto, habrá que especificar el nombre de la columna, su tipo y, eventualmente, su valor por defecto y los vínculos impuestos en la columna.
La la palabra clave COLUMN se puede omitir (aquí y en todos los casos sucesivos).

Eliminación de una columna de la tabla

ALTER TABLE nombre_tabla
DROP [ COLUMN ] nombre_columna { RESTRICT | CASCADE }


nombre_columna es el nombre de la columna que se quiere eliminar. Las cláusulas RESSTRIC y CASCADE se comportan exactamente como en la instrucción DROP TABLE que se ha visto anteriormente.
La instrucción fallará, además de en los casos ya vistos para RESTRICT, si se intenta eliminar una columna que es la única de una tabla.

Cambio del valor por defecto de una columna

ALTER TABLE nombre_tabla
ALTER [ COLUMN ] nombre_columna { SET cláusula_defecto | DROP DEFAULT }


La sintaxis y el significado de la cláusula que define el nuevo valor de defecto son idénticos a los de la cláusula_defecto que se usa en la orden CREATE TABLE.

Eliminación de un vínculo de la tabla

ALTER TABLE nombre_tabla
DROP CONSTRAINT nombre_vínculo { RESTRICT | CASCADE }


Elimina el vínculo identificado por el nombre especificado. La operación falla si se ha especificado la cláusula RESTRICT y existen otros vínculos que dependen del que se intenta eliminar. Especificando la cláusula CASCADE la operación se completará siempre con éxito, borrando además los vínculos que dependen de que se ha eliminado.
A menudo se quiere eliminar un vínculo al que no se le ha dado un nombre explícitamente, poniendo antes de la definición del vínculo la cláusula opcional [CONSTRAINT nombre_vínculo]. En ese caso, desde el momento que la DBMS habrá asignado de todos modos un nombre al vínculo para poderlo identificar, será necesario interrogar a las tablas de sistema de la DBMS y que nos dé su nombre. La particular interrogación solicitada depende de la DBMS específica que se haya usado.

Adición de un vínculo a la tabla

ALTER TABLE nombre_columna
ADD vínculo_de_tabla


La sintaxis que hay que usar para la definición del vínculo es la misma que se usa en la orden CREATE TABLE para los vínculos de tabla.


  Torna a inizio pagina