Sentencia DROP TABLE en SQL
DROP TABLE
es la sentencia SQL para eliminar tablas junto a todos sus datos, índices, desencadenadores, restricciones y permisos. La sentencia básica es muy simple:
DROP TABLE nombreTabla
Sin embargo, deberemos tener en cuenta varias consideraciones importantes que veremos con ejemplos a continuación:
DROP TABLE
admite varios argumentos para hacer la sentencia más precisa.IF EXISTS
se utiliza para que solo se ejecute la sentencia si verdaderamente la tabla que queremos eliminar existe en el sistema. También podemos especificar la base de datos y/o el esquema al que pertenece la tabla que queremos eliminar. Para ejemplificarlo vamos a utilizar la tablaPedidos
que creamos en la sección CREATE TABLE:
DROP TABLE IF EXISTS tienda.dbo.Pedidos;
Ahora si intentáramos ejecutar nuevamente la sentencia sin el IF EXISTS
, el sistema nos devolvería el siguiente error al no existir la tabla:
No se puede quitar el tabla ‘tienda.dbo.Pedidos’ porque no existe o el usuario no tiene permiso.
El IF EXISTS
también puede utilizarse en sentencias CREATE
y/o ALTER
y es recomendable su uso para evitar errores que puedan paralizar el flujo de código de cara a procedimientos almacenados, transacciones…
- No se puede eliminar una tabla si uno de sus campos hace referencia a una Foreign Key en otra tabla. En ese caso, debemos eliminar primero la restricción Foreign Key de la tabla relacionada u eliminar primero dicha tabla completamente, para poder eliminar la primera.
Por ejemplo, partiendo nuevamente de las tablas creadas Clientes
y Pedidos
, si quisiéramos eliminar la tabla Clientes
con esta sentencia nos devolvería el siguiente error:
DROP TABLE IF EXISTS Clientes;
No se puede quitar el objeto ‘Clientes’. Hay una referencia a él en una restricción FOREIGN KEY.
Este error es debido a que el campo idClientes
está definido como una Foreign Key en la tabla Pedidos
. Para poder por tanto eliminar la tabla Clientes
tendríamos dos opciones: Eliminar antes la tabla Pedidos
u eliminar la restricción Foreign Key de dicha tabla a través de la sentencia ALTER TABLE
.
DROP TABLE
admite como argumentos más de una tabla para eliminar varias en una misma sentencia. Si existen tablas relacionadas, la tabla referenciada donde se define la Foreign Key debe escribirse primero. En el caso de que quisiéramos eliminar las tablasClientes
yPedidos
,Pedidos
debe ir primero para que no devuelva el error anterior en relación a la clave Foreign Key:
DROP TABLE IF EXISTS dbo.Pedidos, dbo.Clientes;
DROP TABLE
también puede utilizarse para eliminar tablas temporales.