Eliminare dati
Proprio come l'istruzione INSERT aggiunge sempre righe intere a una tabella, l'istruzione DELETE rimuove sempre righe intere.
Usare DELETE per rimuovere righe specifiche
DELETE opera in un set di righe, definito da una condizione in una clausola WHERE o definito in un join. La clausola WHERE in un'istruzione DELETE ha la stessa struttura di una clausola WHERE in un'istruzione SELECT.
Nota
È importante tenere presente che un'istruzione DELETE senza una clausola WHERE corrispondente rimuoverà tutte le righe da una tabella. Usare l'istruzione DELETE con cautela.
Il codice seguente illustra la sintassi di base dell'istruzione DELETE:
DELETE [FROM] <TableName>
WHERE <search_conditions>;
Nell'esempio seguente viene usata l'istruzione DELETE per rimuovere tutti i prodotti, che sono stati sospesi, dalla tabella specificata. Nella tabella è presente una colonna denominata discontinued e, per i prodotti che non sono più disponibili, il valore della colonna è 1.
DELETE FROM Production.Product
WHERE discontinued = 1;
Usare TRUNCATE TABLE per rimuovere tutte le righe
DELETE senza una clausola WHERE rimuove tutte le righe da una tabella. Per questo motivo, l'istruzione DELETE viene in genere usata in modo condizionale, con un filtro nella clausola WHERE. Se si desidera rimuovere tutte le righe e lasciare una tabella vuota, è possibile usare l'istruzione TRUNCATE TABLE. Questa istruzione non consente una clausola WHERE e rimuove sempre tutte le righe con un'unica operazione. Ecco un esempio:
TRUNCATE TABLE Sales.Sample;
Se si desidera rimuovere tutte le righe, TRUNCATE TABLE è più efficiente di DELETE.