# SQL NOT: ricerche precise con criteri di esclusione

L’operatore `NOT` di SQL fa parte degli operatori logici e consente un **filtraggio efficiente e preciso dei risultati di ricerca in base al metodo per esclusione**. Utilizzando `NOT` per escludere i dati che rispettano determinate condizioni puoi restringere i risultati in base alle informazioni di tuo interesse.

## Che cos’è l’operatore SQL `NOT`?

SQL NOT, insieme a SQL `AND` e [SQL OR](https://www.ionos.it/digitalguide/server/configurazione/sql-or/), fa parte degli [operatori SQL](https://www.ionos.it/digitalguide/server/configurazione/operatori-sql/) logici che ti permettono di formulare condizioni e criteri per le query di dati. Mentre gli operatori `AND` e `OR` filtrano i record di dati che soddisfano tutte le condizioni o almeno una di esse, **l’operatore `NOT` si basa sul metodo per esclusione**. In questo modo è possibile escludere dai risultati della tua ricerca tutte le informazioni nei record di dati selezionati che non corrispondono alla condizione definita.

SQL `NOT` si usa spesso in combinazione con [SQL SELECT](https://www.ionos.it/digitalguide/server/configurazione/sql-select/), [SQL WHERE](https://www.ionos.it/digitalguide/server/configurazione/sql-where/) e SQL `HAVING`. Per configurare la ricerca nel modo più preciso possibile puoi anche combinare l’operatore `NOT` **con gli operatori `AND` e `OR`**. In questo modo è possibile filtrare i risultati non rilevanti che non soddisfano tutte le condizioni definite (`AND`) oppure che non corrispondono ad almeno una delle condizioni indicate (`OR`).

### Panoramica delle differenze fra SQL `NOT`, `AND` e `OR`

Gli operatori SQL `NOT`, `AND` e `OR` si differenziano in breve come segue:

<table>
  <thead>
    <tr>
      <th>SQL `NOT`</th>
      <th>SQL `AND`</th>
      <th>SQL `OR`</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Restituisce solo i record di dati che non soddisfano una condizione definita</td>
      <td>Restituisce i record di dati che soddisfano tutti i criteri di ricerca prestabiliti</td>
      <td>Mostra tutte le informazioni che soddisfano almeno una delle condizioni definite</td>
    </tr>
    <tr>
      <td>Nega una condizione che non è rilevante per la ricerca</td>
      <td>Combina le condizioni per limitare la ricerca alle informazioni che corrispondono a più criteri di ricerca</td>
      <td>Estende i risultati della ricerca ai dati che soddisfano uno dei vari criteri</td>
    </tr>
  </tbody>
</table>

Consiglio Vorresti approfondire l’utilizzo di [SQL](https://www.ionos.it/digitalguide/server/know-how/che-cose-sql/), ma le tue conoscenze sono ancora troppo limitate? Allora segui la nostra [introduzione a SQL mediante esempi](https://www.ionos.it/digitalguide/server/configurazione/introduzione-a-sql-mediante-esempi/) per entrare rapidamente nel mondo di questo linguaggio per database.

## La sintassi dell’operatore `NOT`

La semplice sintassi di `NOT` si presenta così:

```sql
SELECT  *
FROM Tabella
WHERE  NOT  (condizionericerca)
```

Sono disponibili i seguenti parametri:

- `SELECT`: seleziona le colonne rilevanti per la tua ricerca. Con un asterisco `*` è possibile eseguire la ricerca nell’intera tabella selezionata e in tutte le relative colonne. Inoltre, è possibile definire anche singole colonne con la rispettiva chiave primaria o esterna.
- `FROM`: definisce la tabella in cui eseguire la ricerca.
- `WHERE`: definisce le condizioni per mezzo di operatori come SQL `NOT` per limitare la query di dati.
- `NOT`: in combinazione con `WHERE`, definisce la negazione di una condizione che non deve essere soddisfatta dai risultati della ricerca.

Se desideri precisare la tua query di dati, puoi utilizzare una combinazione con `AND` o `OR`.

### SQL `NOT`: combinazione con `AND`

In combinazione con `AND`, i risultati che **soddisfano entrambe le condizioni di ricerca**, non devono far parte dell’insieme dei risultati.

```sql
SELECT  *
FROM  Tabella
WHERE  NOT  (condizionericerca1  AND  condizionericerca2)
```

### SQL `NOT`: combinazione con `OR`

In combinazione con `OR` è possibile escludere i dati che non soddisfano **almeno una delle condizioni di ricerca**.

```sql
SELECT  *
FROM  Tabella
WHERE  NOT  (condizionericerca1  OR  condizionericerca2)
```

## Possibilità di applicazione dell’operatore `NOT`

Le possibilità di utilizzo per query e ricerche con `NOT` sono **quasi illimitate**. Ad esempio è possibile:

- Escludere dati dei clienti, ordini o prodotti per regione, anno, categoria, prezzo o caratteristiche
- Ignorare record di dati con valori non validi o mancanti
- Filtrare dati finanziari che non soddisfano determinati criteri di transazione
- Escludere dati di dipendenti che non fanno parte di un dato reparto
- Filtrare ed escludere candidati che non rispondono a una determinata qualifica

## Esempi pratici per l’operatore SQL `NOT`

A seconda dell’applicazione, la ricerca con l’operatore `NOT` può variare di molto, in base alla definizione della condizione con la clausola `WHERE`, con l’operatore `NOT` e con ulteriori operatori opzionali. Per chiarire il funzionamento ti mostriamo **tre esempi pratici di applicazione**.

### Esclusione di dipendenti per regione

L’obiettivo è ottenere una tabella “Dipendenti” contenente solo le informazioni sui dipendenti **che non vivono in Italia**. A tal fine definisci la condizione nel modo seguente utilizzando la colonna “Paese”, la clausola `WHERE`, l’operatore `NOT` e l’operatore di confronto `=`:

```sql
SELECT  *
FROM  Dipendenti
WHERE  NOT  (Paese  =  'Italia')
```

Puoi procedere in modo simile, ad esempio, se vuoi visualizzare in una tabella soltanto i prodotti che **non sono più disponibili a magazzino**.

```sql
SELECT  *
FROM  Prodotti
WHERE  NOT  (Scorta  >  0)
```

### Filtraggio di gruppi di clienti

In una tabella “Clienti” desideri cercare un determinato gruppo di clienti che **non soddisfano le condizioni prestabilite**. In questo esempio, i clienti non devono avere meno di 30 anni e non devono vivere a Milano. Pertanto, oltre a `NOT`, utilizziamo anche operatori di confronto e l’operatore `AND`.

```sql
SELECT  *
FROM  Clienti
WHERE  NOT  (Età  <  30  AND  Città  =  'Milano')
```

### Filtraggio di qualifiche mancanti per la candidatura

Qui desideri escludere determinati risultati da una tabella “Candidati” che non possiedono **qualifiche specifiche** come “Laurea triennale” o “Esperienza professionale”. La ricerca si presenta così:

```sql
SELECT  *
FROM  Candidati
WHERE  NOT  (Titolo di studio  =  ´Laurea triennale´  OR  Esperienza professionale  <  3)
```

## Alternative a SQL `NOT`

Un’alternativa che svolga la stessa identica funzione non esiste, poiché l’operatore `NOT` è caratterizzato dalla negazione di criteri di ricerca. Data la versatilità dell’operatore SQL `NOT`, è comunque possibile combinarlo con diversi [comandi SQL](https://www.ionos.it/digitalguide/server/configurazione/comandi-sql/) per creare **query più precise**. Alcuni di questi sono [SQL JOIN](https://www.ionos.it/digitalguide/server/configurazione/comandi-sql-join/) o le funzioni di aggregazione SQL `HAVING` come [SQL SUM](https://www.ionos.it/digitalguide/server/configurazione/sql-sum/) o `AVG`, gli operatori di confronto come `=` oppure `>`, nonché comandi e operatori come [SQL LIKE](https://www.ionos.it/digitalguide/server/configurazione/sql-like/). Per limitare o espandere il metodo per esclusione in base a più condizioni, puoi utilizzare inoltre gli operatori logici `AND` e `OR`.


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