# SQL DELETE: come cancellare uno o più voci dalla tua tabella

SQL DELETE è il comando più usato per eliminare una determinata voce da una tabella e consente l’uso della condizione WHERE. Tale condizione è opzionale: se non la specifichiamo, l’intero contenuto della tabella viene cancellato.

## Cos’è SQL Delete?

Durante l’elaborazione di tabelle, spesso accade che una voce diventi obsoleta e che possa quindi essere cancellata dal record di dati. Usando il comando SQL DELETE dello [Structured Query Language](https://www.ionos.it/digitalguide/server/know-how/che-cose-sql/) istruisci il sistema a cancellare **una o più voci**. Tuttavia, se desideri che dalla tabella vengano eliminate solo determinati dati, dovrai specificare la condizione WHERE. A tal proposito consigliamo sempre una certa cautela: senza WHERE, infatti, dalla tabella verrebbero cancellate **tutte le voci**.

## Sintassi e funzionamento

Nella sintassi di SQL DELETE la condizione `WHERE` viene specificata in modo implicito. Il [comando SQL](https://www.ionos.it/digitalguide/server/configurazione/comandi-sql/) è strutturato nel seguente modo:

```sql
DELETE FROM nome_della_tabella
WHERE condizione;
```

Nella prima riga avvii il comando vero e proprio e specifici il nome della tabella in cui le voci dovranno essere cancellate. **La seconda riga è opzionale** e specifica la condizione che una voce della tabella deve soddisfare per poter essere eliminata. Omettendo questa condizione, il sistema prende in considerazione tutte le voci della tabella e le elimina.

## Eliminare una o più voci

Di seguito spieghiamo come funziona SQL DELETE tramite un esempio. A questo proposito creiamo la tabella fittizia denominata “Elenco\_clienti” Questa contiene diverse voci relative ai clienti di un’azienda e include numero cliente, cognome e città.

Ecco la tabella:

<table>
  <thead>
    <tr>
      <th>Numero\_cliente</th>
      <th>Cognome</th>
      <th>Città</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1427</td>
      <td>Rossi</td>
      <td>Roma</td>
    </tr>
    <tr>
      <td>1377</td>
      <td>Bianchi</td>
      <td>Milano</td>
    </tr>
    <tr>
      <td>1212</td>
      <td>Ferrari</td>
      <td>Milano</td>
    </tr>
    <tr>
      <td>1431</td>
      <td>Costa</td>
      <td>Firenze</td>
    </tr>
    <tr>
      <td>1118</td>
      <td>Russo</td>
      <td>Napoli</td>
    </tr>
  </tbody>
</table>

Se desideri cancellare dalla lista solo il cliente Bianchi, puoi usare il seguente comando:

```sql
DELETE FROM Elenco_clienti
WHERE Numero_cliente = 1377;
```

Poiché solo il cliente Bianchi possiede il numero cliente `1377`, il risultato sarà il seguente:

<table>
  <thead>
    <tr>
      <th>Numero\_cliente</th>
      <th>Nome</th>
      <th>Città</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1427</td>
      <td>Rossi</td>
      <td>Roma</td>
    </tr>
    <tr>
      <td>1212</td>
      <td>Ferrari</td>
      <td>Milano</td>
    </tr>
    <tr>
      <td>1431</td>
      <td>Costa</td>
      <td>Firenze</td>
    </tr>
    <tr>
      <td>1118</td>
      <td>Russo</td>
      <td>Napoli</td>
    </tr>
  </tbody>
</table>

In alternativa, avresti potuto specificare nella condizione `WHERE` il nome Bianchi.

Per **cancellare più clienti** si procede in modo simile. Nel nostro esempio possiamo eliminare tutte le voci contenenti il luogo Milano. Questo il relativo codice:

```sql
DELETE FROM Elenco_clienti
WHERE Città = 'Milano';
```

Poiché due voci presentano il valore ‘Milano’, il risultato sarà il seguente:

<table>
  <thead>
    <tr>
      <th>Numero\_cliente</th>
      <th>Nome</th>
      <th>Città</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1427</td>
      <td>Rossi</td>
      <td>Roma</td>
    </tr>
    <tr>
      <td>1431</td>
      <td>Costa</td>
      <td>Firenze</td>
    </tr>
    <tr>
      <td>1118</td>
      <td>Russo</td>
      <td>Napoli</td>
    </tr>
  </tbody>
</table>

## Eliminare tutte le voci di una tabella

Se durante l’esecuzione del comando SQL DELETE rinunci alla condizione `WHERE`, cancelli tutte le voci. La tabella **resta intatta**, ma dopo aver eseguito il comando risulta vuota. Nel nostro esempio la sintassi del codice è questa:

```sql
DELETE FROM Elenco_clienti;
```

In conclusione, consigliamo di usare questo comando con cautela.

## Cancellare l’intera tabella con DROP TABLE

Se desideri cancellare tutta la tabella, il comando `DROP TABLE` è la scelta giusta. Questa la sintassi:

```sql
DROP TABLE nome_della_tabella;
```

Per il nostro esempio questo sarebbe il relativo codice:

```sql
DROP TABLE Elenco_clienti;
```

## Comandi simili a SQL DELETE

Il comando `TRUNCATE TABLE` si usa in alternativa a SQL DELETE. Può essere usato per **eliminare in una sola volta tutte le voci di una tabella** e non supporta la condizione WHERE. Se invece desideri creare una nuova tabella, puoi usare il comando [SQL CREATE TABLE](https://www.ionos.it/digitalguide/server/configurazione/sql-create-table/). Per evitare di cancellare erroneamente tutti i dati senza possibilità di recuperarli, consigliamo di eseguire regolarmente dei [backup](https://www.ionos.it/digitalguide/server/sicurezza/che-cose-un-backup/). Per farlo ti basta usare il comando [SQL BACKUP DATABASE](https://www.ionos.it/digitalguide/server/configurazione/sql-backup-database/).

Consiglio Scegli la massima performance. Grazie all’[hosting SQL server](https://www.ionos.it/cloud/sql-server-hosting "Hosting SQL server di IONOS") di IONOS puoi scegliere fra MSSQL, MySQL e MariaDB. In più approfitta di un’assistenza personale, velocità elevata e sicurezza garantite.


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