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 FROM
parole chiave. - In secondo luogo, usate una condizione nella clausola
WHERE
per 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 FROM
per cancellare una o più righe da una tabella. - Utilizzare la clausola
WHERE
per specificare quali righe devono essere cancellate. - Utilizzare la clausola
RETURNING
per restituire le righe eliminate.
- Questo tutorial è stato utile?