Eliminare una tabella in SQL facile. Usa semplicemente DROP TABLE myTable
dove myTable
è il nome della tabella che vuoi eliminare. È possibile utilizzare questo metodo per eliminare una tabella in SQL Server tramite script T-SQL.
Ma riceverai un errore se la tabella non esiste effettivamente. Cioè, a meno che tu non controlli prima l'esistenza della tabella.
Di seguito sono riportati quattro modi per utilizzare T-SQL per verificare se la tabella esiste prima di eliminarla.
Opzione 1:IF EXISTS
Clausola
Quando si utilizza SQL Server 2016 o versioni successive, è possibile utilizzare IF EXISTS
clausola del DROP TABLE
istruzione per verificare l'esistenza della tabella prima di provare a eliminarla:
DROP TABLE IF EXISTS t1;
Questo rilascia una tabella chiamata t1
se esiste.
Ecco il risultato dell'esecuzione dell'istruzione precedente quando la tabella esiste (e viene quindi eliminata):
Commands completed successfully.
Ed ecco cosa otteniamo se eseguiamo immediatamente di nuovo l'istruzione (cioè quando la tabella non esiste):
Commands completed successfully.
Stesso output. Quindi l'istruzione viene eseguita correttamente indipendentemente dal fatto che la tabella esista o meno.
Ecco cosa succede se proviamo a eliminare la tabella senza utilizzare IF EXISTS
clausola:
DROP TABLE t1;
Risultato:
Msg 3701, Level 11, State 5, Line 1 Cannot drop the table 't1', because it does not exist or you do not have permission.
Opzione 2:verifica l'ID oggetto
In alternativa possiamo usare OBJECT_ID()
funzione per verificare l'esistenza della tabella prima di provare a eliminarla:
IF OBJECT_ID(N'dbo.t1', N'U') IS NOT NULL
DROP TABLE dbo.t1;
GO
L'esempio sopra controlla l'ID oggetto per un dbo.t1
tavolo. Il secondo argomento per OBJECT_ID()
specifica il tipo di oggetto che stiamo cercando. In questo caso utilizziamo U
, che sta per "tabella definita dall'utente".
Il OBJECT_ID()
restituisce il numero di identificazione dell'oggetto database di un oggetto con ambito schema. Se l'oggetto esiste, non restituirà NULL e quindi possiamo eliminare la tabella. Se l'oggetto non lo fa esiste, o se non hai accesso ad essa, la funzione restituisce NULL e il DROP TABLE
l'istruzione non verrà eseguita.
Opzione 3:query information_schema.tables
Un altro modo per verificare se una tabella esiste già è interrogare information_schema.tables
visualizza:
IF EXISTS (
SELECT * FROM information_schema.tables
WHERE table_schema = 'dbo' AND table_name = 't1')
DROP TABLE dbo.t1;
Ciò fa una cosa simile all'esempio precedente; verifica l'esistenza della tabella e la crea solo se non esiste.
Opzione 4:interroga sys.tables
Possiamo anche interrogare sys.tables
vista catalogo di sistema:
IF EXISTS (
SELECT * FROM sys.tables t
JOIN sys.schemas s ON (t.schema_id = s.schema_id)
WHERE s.name = 'dbo' AND t.name = 't1')
DROP TABLE dbo.t1;
SQL Server offre molti altri modi per verificare l'esistenza di tabelle. Vedere 6 modi per verificare se una tabella esiste in SQL Server per esempi.