Torna all'elenco degli articoli Articoli
Tempo di lettura: 4 minuti

Uso degli operatori AND, OR e NOT in SQL

AND OR e sono importanti operatori logici in SQL. Consentono di combinare le condizioni utilizzate per filtrare i record. Vengono utilizzati soprattutto in combinazione con le clausole NOT WHERE o HAVING. Inoltre, questo argomento è una domanda piuttosto comune nei colloqui di lavoro in SQL.

Per aiutarvi a comprendere appieno questi operatori, vi illustrerò alcuni esempi, spiegandovi a fondo la sintassi e lo scopo di ciascuno di essi. Esercitarsi con esempi come questi è uno dei metodi migliori per imparare l'SQL.

Per fare un esempio, immaginiamo di gestire e possedere una palestra con diverse sedi negli Stati Uniti. Quando le persone si iscrivono, ci forniscono alcune informazioni di base. Queste vengono memorizzate nella nostra tabella members che contiene un ID univoco per ogni iscritto, oltre al nome e al cognome, all'età, alla data di iscrizione e alla sede della palestra.

idFirstNameLastNameAgeDateJoinedLocation
1WillSmith522020-08-23Los Angeles
2BradPitt562018-06-15San Francisco
3TomHanks642017-02-27San Diego
4AngelinaJolie452019-04-02Los Angeles
5MerylStreep712014-03-21Manhattan

Sintassi di SQL AND

La sintassi dell'operatore AND è la seguente:

SELECT column_1, column_2, … column_n
FROM table
WHERE condition_1 AND condition_2 AND condition_n

Quando si combinano più condizioni utilizzando l'operatore AND, verranno restituite tutte le righe che soddisfano tutte le condizioni date.

Ora è il momento di applicare l'operatore AND al nostro scenario della palestra. Supponiamo di voler trovare tutti i membri che hanno meno di 50 anni e vivono a Los Angeles. Come possiamo ottenere questo risultato con una query SQL?

SELECT * 
FROM members 
WHERE Age < 50 AND Location = 'Los Angeles';
idFirstNameLastNameAgeDateJoinedLocation
4AngelinaJolie452019-04-02Los Angeles

Age Anche se abbiamo due membri con Location di Los Angeles, solo uno di loro ha meno di 50 anni. Ricordate che quando si utilizza l'operatore SQL AND, entrambe le condizioni devono essere soddisfatte affinché venga restituito un record.

Sintassi dell'operatore SQL OR

La sintassi dell'operatore OR è la seguente:

SELECT column_1, column_2, … column_n
FROM table
WHERE condition_1 OR condition_2 OR condition_n

Quando si combinano più condizioni utilizzando l'operatore OR, verranno restituite tutte le righe che soddisfano una qualsiasi delle condizioni date. Possiamo applicare questa funzione alla nostra tabella members scrivendo la seguente query:

SELECT * 
FROM members 
WHERE Location = 'Los Angeles' OR LastName = 'Hanks'

Con questa query, vogliamo recuperare le righe in cui LastName è Hanks o Location è Los Angeles. L'esecuzione della query produce il seguente risultato:

idFirstNameLastNameAgeDateJoinedLocation
1WillSmith522020-08-23Los Angeles
3TomHanks642017-02-27San Diego
4AngelinaJolie452019-04-02Los Angeles

Si noti come il nostro membro Tom Hanks sia incluso nel set di risultati anche se la sua palestra Location non è Los Angeles. Questo perché soddisfa la seconda condizione che abbiamo specificato: il suo cognome è "Hanks". Ricordate: quando si utilizza l'operatore SQL OR, verranno restituite tutte le righe che soddisfano una qualsiasi delle condizioni indicate.

Sintassi di SQL NOT

La sintassi dell'operatore NOT è la seguente:

SELECT column_1, column_2, … column_n
FROM table
WHERE NOT condition 

Quando si combinano più condizioni utilizzando l'operatore NOT, verranno restituite tutte le righe che non soddisfano le condizioni date.

Possiamo utilizzare questo operatore con il nostro esempio di palestra in molti modi utili. E se volessimo trovare tutti gli iscritti che non si trovano a Los Angeles? Utilizzando l'operatore NOT, possiamo semplicemente scrivere:

SELECT * 
FROM members 
WHERE NOT Location = 'Los Angeles'

L'esecuzione di questa query produce il seguente set di dati:

idFirstNameLastNameAgeDateJoinedLocation
2BradPitt562018-06-15San Francisco
3TomHanks642017-02-27San Diego
5MerylStreep712014-03-21Manhattan

Si può vedere chiaramente l'effetto dell'operatore NOT. Non sono stati restituiti membri con Location impostato su Los Angeles.

Combinazione degli operatori AND, OR e NOT

In alcune situazioni è necessario combinare questi operatori per specificare esattamente i dati desiderati.

Ecco di nuovo la nostra tabella members è il set di dati che interrogheremo in questo esempio.

idFirstNameLastNameAgeDateJoinedLocation
1WillSmith522020-08-23Los Angeles
2BradPitt562018-06-15San Francisco
3TomHanks642017-02-27San Diego
4AngelinaJolie452019-04-02Los Angeles
5MerylStreep712014-03-21Manhattan

Supponiamo di voler recuperare i dati dei membri che rispondono a criteri molto specifici. Vogliamo i membri che sono:

  • Hanno più di 50 anni.
  • Si trovano a Los Angeles o a Manhattan.

Possiamo ottenere questo risultato scrivendo la seguente query SQL:

SELECT * FROM members
WHERE AGE > 50 AND (Location='Los Angeles' OR Location='Manhattan')

Notate come abbiamo usato le parentesi per raggruppare gli operatori. In questo modo SQL sa esattamente come interpretare l'ordine degli operatori. Il risultato di questa query è:

idFirstNameLastNameAgeDateJoinedLocation
1WillSmith522020-08-23Los Angeles
5MerylStreep712014-03-21Manhattan

Si può notare come la combinazione degli operatori AND, OR e NOT in modi diversi possa aiutarci a filtrare con precisione i nostri dati.

Espandere l'SQL con gli operatori AND, OR e NOT

Ora avete la possibilità di recuperare i dati esatti che desiderate. Questo apre molte possibilità.

È possibile utilizzare la clausola WHERE insieme a AND, OR e NOT, consentendo di essere molto precisi nelle query SQL. Leggere i nostri post sul blog è un ottimo modo per imparare la sintassi SQL e vedere i diversi scenari in cui SQL può essere utile. Tuttavia, se volete una guida veramente completa alla scrittura delle query, prendete in considerazione il nostro corso SQL Basics che vi permetterà di fare molta pratica.