L’operatore NOT di SQL fa parte degli operatori logici e consente un fil­trag­gio ef­fi­cien­te e preciso dei risultati di ricerca in base al metodo per esclu­sio­ne. Uti­liz­zan­do NOT per escludere i dati che ri­spet­ta­no de­ter­mi­na­te con­di­zio­ni puoi re­strin­ge­re i risultati in base alle in­for­ma­zio­ni di tuo interesse.

Che cos’è l’operatore SQL NOT?

SQL NOT, insieme a SQL AND e SQL OR, fa parte degli operatori SQL logici che ti per­met­to­no di formulare con­di­zio­ni e criteri per le query di dati. Mentre gli operatori AND e OR filtrano i record di dati che sod­di­sfa­no tutte le con­di­zio­ni o almeno una di esse, l’operatore NOT si basa sul metodo per esclu­sio­ne. In questo modo è possibile escludere dai risultati della tua ricerca tutte le in­for­ma­zio­ni nei record di dati se­le­zio­na­ti che non cor­ri­spon­do­no alla con­di­zio­ne definita.

SQL NOT si usa spesso in com­bi­na­zio­ne con SQL SELECT, SQL WHERE e SQL HAVING. Per con­fi­gu­ra­re 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 sod­di­sfa­no tutte le con­di­zio­ni definite (AND) oppure che non cor­ri­spon­do­no ad almeno una delle con­di­zio­ni indicate (OR).

Pa­no­ra­mi­ca delle dif­fe­ren­ze fra SQL NOT, AND e OR

Gli operatori SQL NOT, AND e OR si dif­fe­ren­zia­no in breve come segue:

SQL NOT SQL AND SQL OR
Re­sti­tui­sce solo i record di dati che non sod­di­sfa­no una con­di­zio­ne definita Re­sti­tui­sce i record di dati che sod­di­sfa­no tutti i criteri di ricerca pre­sta­bi­li­ti Mostra tutte le in­for­ma­zio­ni che sod­di­sfa­no almeno una delle con­di­zio­ni definite
Nega una con­di­zio­ne che non è rilevante per la ricerca Combina le con­di­zio­ni per limitare la ricerca alle in­for­ma­zio­ni che cor­ri­spon­do­no a più criteri di ricerca Estende i risultati della ricerca ai dati che sod­di­sfa­no uno dei vari criteri
Consiglio

Vorresti ap­pro­fon­di­re l’utilizzo di SQL, ma le tue co­no­scen­ze sono ancora troppo limitate? Allora segui la nostra in­tro­du­zio­ne a SQL mediante esempi per entrare ra­pi­da­men­te nel mondo di questo lin­guag­gio per database.

La sintassi dell’operatore NOT

La semplice sintassi di NOT si presenta così:

SELECT  *
FROM Tabella
WHERE  NOT  (condizionericerca)
sql

Sono di­spo­ni­bi­li i seguenti parametri:

  • SELECT: seleziona le colonne rilevanti per la tua ricerca. Con un asterisco * è possibile eseguire la ricerca nell’intera tabella se­le­zio­na­ta e in tutte le relative colonne. Inoltre, è possibile definire anche singole colonne con la ri­spet­ti­va chiave primaria o esterna.
  • FROM: definisce la tabella in cui eseguire la ricerca.
  • WHERE: definisce le con­di­zio­ni per mezzo di operatori come SQL NOT per limitare la query di dati.
  • NOT: in com­bi­na­zio­ne con WHERE, definisce la negazione di una con­di­zio­ne che non deve essere sod­di­sfat­ta dai risultati della ricerca.

Se desideri precisare la tua query di dati, puoi uti­liz­za­re una com­bi­na­zio­ne con AND o OR.

SQL NOT: com­bi­na­zio­ne con AND

In com­bi­na­zio­ne con AND, i risultati che sod­di­sfa­no entrambe le con­di­zio­ni di ricerca, non devono far parte dell’insieme dei risultati.

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

SQL NOT: com­bi­na­zio­ne con OR

In com­bi­na­zio­ne con OR è possibile escludere i dati che non sod­di­sfa­no almeno una delle con­di­zio­ni di ricerca.

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

Pos­si­bi­li­tà di ap­pli­ca­zio­ne dell’operatore NOT

Le pos­si­bi­li­tà di utilizzo per query e ricerche con NOT sono quasi il­li­mi­ta­te. Ad esempio è possibile:

  • Escludere dati dei clienti, ordini o prodotti per regione, anno, categoria, prezzo o ca­rat­te­ri­sti­che
  • Ignorare record di dati con valori non validi o mancanti
  • Filtrare dati fi­nan­zia­ri che non sod­di­sfa­no de­ter­mi­na­ti criteri di tran­sa­zio­ne
  • Escludere dati di di­pen­den­ti che non fanno parte di un dato reparto
  • Filtrare ed escludere candidati che non ri­spon­do­no a una de­ter­mi­na­ta qualifica

Esempi pratici per l’operatore SQL NOT

A seconda dell’ap­pli­ca­zio­ne, la ricerca con l’operatore NOT può variare di molto, in base alla de­fi­ni­zio­ne della con­di­zio­ne con la clausola WHERE, con l’operatore NOT e con ulteriori operatori opzionali. Per chiarire il fun­zio­na­men­to ti mostriamo tre esempi pratici di ap­pli­ca­zio­ne.

Esclu­sio­ne di di­pen­den­ti per regione

L’obiettivo è ottenere una tabella “Di­pen­den­ti” con­te­nen­te solo le in­for­ma­zio­ni sui di­pen­den­ti che non vivono in Italia. A tal fine definisci la con­di­zio­ne nel modo seguente uti­liz­zan­do la colonna “Paese”, la clausola WHERE, l’operatore NOT e l’operatore di confronto =:

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

Puoi procedere in modo simile, ad esempio, se vuoi vi­sua­liz­za­re in una tabella soltanto i prodotti che non sono più di­spo­ni­bi­li a magazzino.

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

Fil­trag­gio di gruppi di clienti

In una tabella “Clienti” desideri cercare un de­ter­mi­na­to gruppo di clienti che non sod­di­sfa­no le con­di­zio­ni pre­sta­bi­li­te. In questo esempio, i clienti non devono avere meno di 30 anni e non devono vivere a Milano. Pertanto, oltre a NOT, uti­liz­zia­mo anche operatori di confronto e l’operatore AND.

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

Fil­trag­gio di qua­li­fi­che mancanti per la can­di­da­tu­ra

Qui desideri escludere de­ter­mi­na­ti risultati da una tabella “Candidati” che non pos­sie­do­no qua­li­fi­che spe­ci­fi­che come “Laurea triennale” o “Espe­rien­za pro­fes­sio­na­le”. La ricerca si presenta così:

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

Al­ter­na­ti­ve a SQL NOT

Un’al­ter­na­ti­va che svolga la stessa identica funzione non esiste, poiché l’operatore NOT è ca­rat­te­riz­za­to dalla negazione di criteri di ricerca. Data la ver­sa­ti­li­tà dell’operatore SQL NOT, è comunque possibile com­bi­nar­lo con diversi comandi SQL per creare query più precise. Alcuni di questi sono SQL JOIN o le funzioni di ag­gre­ga­zio­ne SQL HAVING come SQL SUM o AVG, gli operatori di confronto come = oppure >, nonché comandi e operatori come SQL LIKE. Per limitare o espandere il metodo per esclu­sio­ne in base a più con­di­zio­ni, puoi uti­liz­za­re inoltre gli operatori logici AND e OR.

Vai al menu prin­ci­pa­le