L’istruzione DELETE permette di eliminare i record di una tabella che soddisfano un certo predicato:
DELETE FROM nome_tabella
[ WHERE predicato ]
Anche in questo caso non ci dilunghiamo sulla clausola WHERE
, per la quale vale la considerazione fatta sopra: se viene omessa, l’eliminazione avverrà su tutte le righe della tabella. Quindi occorre prestare particolare attenzione con la specificazione della clausola, anche per verificare che si specifichino solo i record che si vogliono eliminare.
Se sussistono delle chiavi esterne sui record che vengono specificati, e se nei vincoli non sono state specificate azioni in caso di cancellazione con la clausola ON DELETE
(come visto nella lezione sulla creazione del database), allora l’annullamento fallirà. Ad esempio questa query fallirà a causa del riferimento del record nella tabella Book:
DELETE FROM Publisher WHERE ID = 1
Se invece, ad esempio, fosse stata specificata la clausola ON DELETE CASCADE
nella definizione della tabella Book, anche i libri che avessero riferimento a questo editore sarebbero stati cancellati nella stessa transazione.