DELETE

Eliminare record da una tabella già esistente.

Tutti

Eliminare tutti i record

DELETE FROM nome_tabella

WHERE

Stabilire una restrizione sull’elimininazione

DELETE FROM nome_tabella
WHERE  condizione

LIMIT

Limitare a un certo numero le eliminazioni.
Utile per non tenere occupato il DB: sarà necessario ripetere il comando finché il numero di righe eliminate non sarà minore del numero specificato.

DELETE FROM nome_tabella
...
LIMIT  numero

ORDER BY

Seguire un certo ordine durante l’eliminazione di più record.
Utile se esistono dei vincoli di integrità tra i record: sarà necessario ripetere il comando finché il numero di righe eliminate non sarà minore del numero specificato.

DELETE   FROM nome_tabella
...
ORDER BY criterio
LIMIT    numero

Tanti

Se i record da eliminare sono la maggioranza si può rendere l’operazione più veloce: si copiano i pochi record da mantenere in una nuova tabella e poi…

INSERT INTO nuova_tabella
  SELECT *
  FROM   tabella
  WHERE  record_da_mantenere;

RENAME TABLE tabella TO vecchia_tabella;
RENAME TABLE nuova_tabella TO tabella;
DROP TABLE vecchia_tabella;