Sommario: in questo tutorial, imparerai come usare l’istruzione PostgreSQL DELETE per eliminare dati da una tabella.
Introduzione all’istruzione PostgreSQL DELETE
L’istruzione PostgreSQL DELETE permette di cancellare una o più righe da una tabella.
Il seguente mostra la sintassi di base dell’istruzione DELETE:
Code language: SQL (Structured Query Language) (sql)DELETE FROM table_nameWHERE condition;
In questa sintassi:
- Prima, specifica il nome della tabella da cui vuoi cancellare i dati dopo le 
DELETE FROMparole chiave. - In secondo luogo, usate una condizione nella clausola 
WHEREper specificare quali righe della tabella eliminare. 
La clausola WHERE è opzionale. Se ometti la clausola WHERE, l’istruzione DELETE cancellerà tutte le righe della tabella.
L’istruzione DELETE restituisce il numero di righe eliminate. Restituisce zero se l’istruzione DELETE non ha cancellato nessuna riga.
Per restituire al client le righe eliminate, si usa la clausola RETURNING come segue:
Code language: SQL (Structured Query Language) (sql)DELETE FROM table_nameWHERE conditionRETURNING (select_list | *)
L’asterisco (*) permette di restituire tutte le colonne della riga cancellata dal table_name.
Per restituire colonne specifiche, bisogna specificarle dopo la parola chiave RETURNING.
Nota che la dichiarazione DELETE rimuove solo i dati da una tabella. Non modifica la struttura della tabella. Se vuoi cambiare la struttura di una tabella, come rimuovere una colonna, dovresti usare l’istruzione ALTER TABLE.
Esempi di istruzione DELETE in PostgreSQL
Impostiamo una tabella di esempio per la dimostrazione.
Le seguenti istruzioni creano una nuova tabella chiamata links e inseriscono alcuni dati di esempio:
Code language: SQL (Structured Query Language) (sql)DROP TABLE IF EXISTS links;CREATE TABLE links ( id serial PRIMARY KEY, url varchar(255) NOT NULL, name varchar(255) NOT NULL, description varchar(255), rel varchar(10), last_update date DEFAULT now());INSERT INTO links VALUES ('1', 'https://www.postgresqltutorial.com', 'PostgreSQL Tutorial', 'Learn PostgreSQL fast and easy', 'follow', '2013-06-02'), ('2', 'http://www.oreilly.com', 'O''Reilly Media', 'O''Reilly Media', 'nofollow', '2013-06-02'), ('3', 'http://www.google.com', 'Google', 'Google', 'nofollow', '2013-06-02'), ('4', 'http://www.yahoo.com', 'Yahoo', 'Yahoo', 'nofollow', '2013-06-02'), ('5', 'http://www.bing.com', 'Bing', 'Bing', 'nofollow', '2013-06-02'), ('6', 'http://www.facebook.com', 'Facebook', 'Facebook', 'nofollow', '2013-06-01'), ('7', 'https://www.tumblr.com/', 'Tumblr', 'Tumblr', 'nofollow', '2013-06-02'), ('8', 'http://www.postgresql.org', 'PostgreSQL', 'PostgreSQL', 'nofollow', '2013-06-02');
Ecco il contenuto della tabella links:
Code language: SQL (Structured Query Language) (sql)SELECT * FROM links;

1) Usare PostgreSQL DELETE per eliminare una riga dalla tabella
La seguente istruzione usa l’istruzione DELETE per eliminare una riga con l’id 8 dalla tabella links:
Code language: SQL (Structured Query Language) (sql)DELETE FROM linksWHERE id = 8;
L’istruzione restituisce 1 indica che una riga è stata cancellata:
Code language: Shell Session (shell)DELETE 1
L’istruzione seguente usa l’istruzione DELETE per cancellare la riga con id 10:
Code language: SQL (Structured Query Language) (sql)DELETE FROM linksWHERE id = 10;
Siccome la riga con id 10 non esiste, l’istruzione restituisce 0:
Code language: Shell Session (shell)
2) Usare PostgreSQL DELETE per cancellare una riga e restituire la riga cancellata
La seguente istruzione cancella la riga con id 7 e restituisce la riga cancellata al client:
Code language: SQL (Structured Query Language) (sql)DELETE FROM linksWHERE id = 7RETURNING *;
PostgreSQL restituisce la seguente riga cancellata:

3) Usare PostgreSQL DELETE per cancellare più righe dalla dalla tabella
La seguente istruzione elimina due righe dalla tabella links e restituisce i valori nella colonna id delle righe eliminate:
Code language: SQL (Structured Query Language) (sql)DELETE FROM linksWHERE id IN (6,5)RETURNING *;
Output:
4) Usare PostgreSQL DELETE per eliminare tutte le righe dalla tabella
La seguente istruzione usa l’istruzione DELETE senza una clausola WHERE per eliminare tutte le righe dalla tabella links:
Code language: SQL (Structured Query Language) (sql)DELETE FROM links;
La tabella links ora è vuota.
Sommario
- Utilizzare la dichiarazione 
DELETE FROMper cancellare una o più righe da una tabella. - Utilizzare la clausola 
WHEREper specificare quali righe devono essere cancellate. - Utilizzare la clausola 
RETURNINGper restituire le righe eliminate. 
- Questo tutorial è stato utile?