[SGBD] Sentencias DDL – Modificar tablas

Bases de datos

Cuando hablamos de modificar una tabla, nos referimos a cambiar la estructura de la misma (no los datos que contiene). Es decir, las operaciones permitidas son: añadir columnas a la tabla, suprimir columnas a la tabla, modificar la definición de una columna, añadir o quitar restricciones en una tabla y cambiar el nombre de una tabla o una columna. La orden para modificar tablas, junto al parámetro correspondiente, es ALTER TABLE.

1. Añadir columnas a una tabla (ADD)

Para añadir una columna a una tabla existente, utilizamos la sentencia ALTER TABLE con la siguiente sintaxis: ALTER TABLE NombreTabla ADD (NomCol   TipoDato   Restricción(es)). Por ejemplo, supongamos que tenemos la tabla PROFESOR creada en una entrada anterior con los atributos DNI, NOMBRE, CARGO y EDAD; ahora, deseamos añadir el campo HORAS de tipo NUMBER(3) deberíamos escribir:

Si además, queremos especificar que se trata de un campo que no puede tener valores nulos deberíamos añadir:

OJO: si la tabla PROFESOR está vacía (sin datos) en el momento de hacer esta última modificación, no habrá problemas y el campo HORAS se crea; sin embargo, si la tabla ya tiene datos, ORACLE nos devolverá un error. Cosa lógica, ya que estamos declarando un campo como NOT NULL cuando ya habíamos introducido tuplas sin esta columna. Por tanto, la opción ADD con la restricción NOT NULL solo será posible si la tabla está vacía.

Si deseamos poner varias restricciones, se ponen seguidas y sin comas. Por ejemplo, si el campo HORAS que se desea añadir debe ser NOT NULL y no puede tener valores superiores a 200, la orden sería:

Por último, si deseamos añadir dos o más columnas a una tabla, podemos hacerlo con una sola sentencia ALTER, separando con comas la especificación de cada nueva columna dentro del paréntesis, de la siguiente manera:

2. Eliminar columnas de una tabla (DROP)

Si deseamos eliminar una columna existente de una tabla utilizaremos la sentencia ALTER TABLE con la siguiente sintaxis: ALTER TABLE NombreTabla DROP (NomCol1, NomCol2…).

La única limitación que tenemos a la hora de eliminar una columna, es que sea clave primaria de una tabla y clave ajena de otra. Si lo intentamos, Oracle nos dará error.

3. Modificar columnas de una tabla (MODIFY)

Por modificar columnas en una tabla entendemos aumentar o disminuir la longitud de una columna o bien cambiar el tipo de dato de una columna. A la hora de modificar una tabla, debemos tener en cuenta dos factores: si está vacía o ya contiene datos y si el campo que queremos modificar es clave primaria y actúa como ajena en otra tabla.

Si la tabla está vacía (sin datos), podemos cambiar todo lo que deseemos (a excepción de si queremos cambiar el tipo de dato a una columna que es clave primaria y actúa como ajena en otra tabla).

Si la tabla no está vacía, a las limitaciones anteriores hay que añadir que no se puede disminuis la longitud de una columna de cadena de caracteres o numérica. Tampoco se puede cambiar el tipo de dato.

La sintaxis sería: ALTER TABLE NombreTabla MODIFY (NomCol Nuevo_Tipo_Dato).

Si queremos modificar más de una columna a la vez, solo tendremos que separarlas por comas.

3. Cambiar el nombre de una tabla (RENAME) o de una columa (RENAME COLUMN)

Ya que el renombrado de tablas y/o columnas se consideran una modificación de la estructura de las tablas, esta se realiza mediante la orden ALTER (aunque hay otras). Para cambiar el nombre de una tabla usamos la sintaxis: ALTER TABLE NombreTabla RENAME TO NuevoNombreTabla. Otra alternativa sería no usar ALTER: RENAME NombreTabla To NuevoNombreTabla.

Si deseamos cambiar el nombre de una columna, usamos la sintaxis: ALTER TABLE NombreTabla RENAME COLUMN NombreColumna TO NuevoNombreColumna.

28 años | Entrenador de fútbol | Informático&Web Design | Linuxero | Componente de @chirigotaninos | Creador de http://todobytes.es & http://sudosu.es | Apasionado de la historia

Facebook Twitter Google+ YouTube 

Related posts

Leave a Comment