# PostgreSQL DELETE: eliminazione di contenuti da una tabella

In PostgreSQL è possibile utilizzare DELETE per cancellare i contenuti di una tabella. Inoltre, si possono definire condizioni specifiche per il comando, in modo che l’eliminazione riguardi solo determinate righe. Poiché non è possibile ripristinare i dati eliminati, occorre utilizzare il comando con molta attenzione.

## Che cos’è PostgreSQL `DELETE`?

Il comando `DELETE` di [PostgreSQL](https://www.ionos.it/digitalguide/server/know-how/postgresql/) serve a **eliminare le voci di una tabella**. La condizione `WHERE` ti permette di selezionare righe specifiche da cui rimuovere il contenuto. Se usi il comando senza la clausola `WHERE`, invece, tutto il contenuto della tabella in questione viene **cancellato definitivamente**. Per questo motivo ti consigliamo di utilizzare il comando con estrema cautela.

## PostgreSQL `DELETE`: sintassi e funzionamento

La sintassi `DELETE` in PostgreSQL presenta la seguente struttura di base:

```postgresql
DELETE FROM nome_della_tabella
WHERE [condizione];
```

La parola chiave DELETE FROM dà inizio all’eliminazione nella tabella specificata. La condizione WHERE permette di specificare le righe di cui eliminare il contenuto. Per tenere conto di più condizioni è possibile elencarle con AND o OR.

N.B. Prima di eliminare i dati, assicurati di avere un backup aggiornato del database o di eseguire il processo di eliminazione in una transazione. In questo modo puoi evitare di perdere dati importanti nel caso in cui il comando venga eseguito accidentalmente in modo errato.

## Eliminazione di tutti i contenuti da una tabella

Per chiarire meglio il funzionamento di `DELETE` in PostgreSQL ti mostriamo un esempio pratico. A tal fine utilizziamo il comando [CREATE TABLE](https://www.ionos.it/digitalguide/server/configurazione/postgresql-create-table/) per creare una nuova tabella PostgreSQL denominata “Elenco clienti”. Quindi inseriamo i diversi contenuti in questa tabella con [INSERT INTO](https://www.ionos.it/digitalguide/server/configurazione/postgresql-insert-into/). La tabella ha tre colonne denominate “ID”, “Nome” e “Località” e contiene inizialmente quattro voci. Ad esempio:

```postgresql
| ID | Nome | Località |
| --- | --- | --- |
| 1 | Rossi | Roma |
| 2 | Verdi | Milano |
| 3 | Bianchi | Torino |
| 4 | Rossi | Napoli |
```

A questo punto, per mantenere la tabella **cancellando però tutto il contenuto** possiamo utilizzare DELETE in PostgreSQL senza ulteriori condizioni. Per il nostro esempio, il comando da usare è quindi il seguente:

```postgresql
DELETE FROM Elenco_clienti;
```

## Eliminazione di una riga con DELETE in PostgreSQL

Spesso, tuttavia, si rende necessario eliminare solo **una riga specifica**. Anche in questo caso è possibile utilizzare `DELETE` in PostgreSQL. A tal fine usiamo il comando aggiungendo una clausola `WHERE`. Nel nostro esempio vorremmo cancellare il cliente “Verdi” con l’ID “2”. Il relativo codice si presenta quindi così:

```postgresql
DELETE FROM Elenco_clienti
WHERE ID = 2;
```

## Selezione di righe specifiche con più condizioni

In alcune tabelle, specialmente quelle più lunghe, è possibile la presenza di voci duplicate e quindi non univoche. Se vuoi assicurarti di cancellare solo la riga desiderata, puoi utilizzare `DELETE` in PostgreSQL specificando **più condizioni**. Nel nostro esempio abbiamo due clienti di nome “Rossi” e vogliamo rimuovere dalla tabella solo la seconda voce. A tal fine occorre combinare due condizioni. Il codice che ti serve è il seguente:

```postgresql
DELETE FROM Elenco_clienti
WHERE Nome = 'Rossi'
AND ID >= 3;
```

In questo modo vengono eliminate tutte le righe in cui il nome è “Rossi” e l’ID è maggiore o uguale a “3”. Poiché la prima voce con questo nome ha un numero ID minore di “3”, tale voce rimane nel database anche dopo aver eseguito il comando di cancellazione.


This is a markdown version of: [https://www.ionos.it/digitalguide/server/configurazione/postgresql-delete/](https://www.ionos.it/digitalguide/server/configurazione/postgresql-delete/) for AI/LLM consumption.