Unidad 8. El DDL, Lenguaje de Definición de Datos (XII)


8.6. Eliminar una tabla DROP TABLE

Para eliminar una tabla de una base de datos tenemos la sentencia DROP TABLE. Con ella quitamos una o varias definiciones de tabla y todos los datos, índices, desencadenadores, restricciones y especificaciones de permisos que tengan esas tablas.
Las vistas o procedimientos almacenados que hagan referencia a la tabla quitada se deben quitar explícitamente con DROP VIEW o DROP PROCEDURE.
Su sintaxis es:


    DROP TABLE [nbBaseDatos.[nbEsquema].|nbEsquema.]nbTabla[ ,...n ] [ ; ]  

Para que las reglas de integridad referencial se cumplan, no se puede eliminar una tabla señalada por una restricción FOREIGN KEY. Primero se debe quitar la restricción FOREIGN KEY o la tabla que tiene la clave ajena.

Se pueden quitar varias tablas de cualquier base de datos en una misma sentencia DROP TABLE. Se irán eliminando en el mismo orden en que aparecen en la lista por lo que podremos eliminar dos tablas relacionadas con una sola sentencia pero escribiendo la tabla que contiene la clave ajena primero y después la tabla principal.

Requiere el permiso CONTROL en la tabla o pertenecer a la función fija de base de datos db_ddladmin.

Ejemplo:

DROP  TABLE mitabla;

Elimina la tabla miTabla tanto su definición como los datos, índices definidos sobre ella y permisos.

8.7. Modificar la definición de una tabla ALTER TABLE


    ALTER TABLE [nbBaseDatos.[nbEsquema].|  nbEsquema.]nbTabla 

      { ALTER COLUMN nbColumna 

             { 

               <tipo_dato> 

               [ NULL | NOT NULL ] 

              [ COLLATE nbIntercalacion ] 

            | {ADD | DROP } { ROWGUIDCOL  | PERSISTED }

            } 

      | [WITH{ CHECK | NOCHECK}] ADD 

             { 

               <definicion_columna>

            | <definicion_colCalc>

            | <restriccion_tabla> 

              } [ ,...n ]

      | DROP 

              { 

               [CONSTRAINT] nbRestriccion 

              |COLUMN nbColumna 

             } [,...n ] 

      | {CHECK|NOCHECK} CONSTRAINT {ALL|nbRestriccion[ ,...n ]} 

      | {ENABLE|DISABLE} TRIGGER {ALL | nbTrigger [ ,...n ] }

      }

      [ ; ] 

Aunque la sintaxis parece un poco complicada, realmente no lo es. La sentencia nos permite variar la definición de una tabla ya creada, en qué consiste esta variación: modificar la definición de columnas ya existentes (ALTER COLUMN), añadir más columnas o restricciones (ADD), eliminar columnas y restricciones (DROP), habilitar/deshabilitar restricciones (CHECK CONSTRAINT) y habilitar/deshabilitar triggers.
Como muchas de las cláusulas las hemos estudiado con CREATE TABBLE, sólo incidiremos en lo nuevo.
Para modificar una columna escribiremos la cláusula ALTER COLUMN seguida del nombre de la columna que queremos modificar y la nueva definición, podemos cambiar su tipo de datos indicando uno nuevo, hacer que la columna acepte o no valores nulos (NULL|NOTNULL), cambiar la intercalación (COLLATE).
Con ADD ROWGUIDCOL  hacemos que la columna sea GUID de filas y DROP ROWGUIDCOL hacemos que ya no lo sea.
Si la columna es una columna calculada podemos cambiar su condición de columna almacenada con ADD/DROP PERSISTED.

Ejemplo:


    ALTER TABLE Clientes ALTER COLUMN direccion  VARCHAR(40);  

Hace que la columna direccion de la tabla Clientes, ahora admita 40 caracteres alfanuméricos.
Cuando cambiamos el tipo de una columna hay que tener en cuenta que el nuevo tipo debe ser compatible con el antiguo para que no se pierdan los datos almacenados.
Además la columna no se puede modificar si es ROWGUIDCOL, calculada o si se  utiliza en una columna calculada, si se utiliza en un índice (a menos que la columna sea del tipo de datos varchar, nvarchar o varbinary, el tipo de datos no se cambie y el nuevo tamaño sea igual al tamaño anterior o mayor que éste), si se utiliza en estadísticas, en una restricción PRIMARY KEY, FOREIGN KEY, CHECK o UNIQUE. Sin embargo, se permite el cambio de longitud de una columna de longitud variable en una restricción CHECK o UNIQUE.

Febrero-2010
Pág. 8.12

Atrás  Inicio  Adelante






.