CodeGym /Corsi /SQL SELF /Operatori logici (AND, OR, NOT): combinare le condizioni

Operatori logici (AND, OR, NOT): combinare le condizioni

SQL SELF
Livello 2, Lezione 2
Disponibile

Gli operatori logici sono strumenti che ti aiutano a unire condizioni nelle query per filtrare i dati in modo più avanzato. Probabilmente li hai già visti in altri linguaggi di programmazione. Se paragoniamo le query a un programma antispam nella casella email, gli operatori logici sono come le regole che decidono se un messaggio va nella cartella "Spam" o resta in "Posta in arrivo".

SQL è uno strumento che si usa spesso per selezionare o analizzare dati. Gli operatori logici (AND, OR, NOT) ti permettono di combinare più condizioni in una sola query, così puoi rispondere a domande più complesse, tipo:

  • Quali studenti hanno più di 18 anni e hanno il voto "A"?
  • Quali prodotti sono nella categoria "Elettronica" oppure "Elettrodomestici"?
  • Quali clienti non hanno fatto acquisti?

Dai, vediamo insieme i tre operatori logici principali in SQL:

  1. AND: entrambe le condizioni devono essere vere.
  2. OR: basta che almeno una delle condizioni sia vera.
  3. NOT: inverte (nega) la condizione.

Operatore AND: entrambe le condizioni sono vere

L'operatore AND ti permette di specificare che entrambe le parti della condizione devono essere soddisfatte perché la riga venga inclusa nel risultato.

Sintassi

SELECT colonna1, colonna2
FROM tabella
WHERE condizione AND condizione2;

Esempio 1: Filtrare studenti con più di 18 anni e voto "A"

Supponiamo di avere una tabella students:

id name age grade
1 Alex 20 A
2 Maria 19 B
3 Otto 17 A
4 Anna 22 A

Query:

SELECT name, age, grade
FROM students
WHERE age > 18 AND grade = 'A';

Risultato:

name age grade
Alex 20 A
Anna 22 A

Esempio 2: Filtrare dipendenti dal dipartimento "HR" e con stipendio sopra 50000

SELECT name, department, salary
FROM employees
WHERE department = 'HR' AND salary > 50000;

Operatore OR: almeno una condizione è vera

L'operatore OR si usa quando vuoi selezionare le righe che soddisfano almeno una delle condizioni.

Sintassi

SELECT colonna1, colonna2
FROM tabella
WHERE condizione OR condizione2;

Esempio 1: Filtrare studenti con voto "A" oppure "B"

SELECT name, age, grade
FROM students
WHERE grade = 'A' OR grade = 'B';

Risultato:

name age grade
Alex 20 A
Maria 19 B
Otto 17 A
Anna 22 A

Esempio 2: Prodotti della categoria "Elettronica" oppure con prezzo minore di 100

Tabella products:

product_id name category price
1 Televisore Elettronica 300
2 Ferro da stiro Elettrodomestici 50
3 Smartphone Elettronica 700
4 Bollitore Elettrodomestici 80
SELECT name, category, price
FROM products
WHERE category = 'Elettronica' OR price < 100;

Risultato:

name category price
Televisore Elettronica 300
Ferro da stiro Elettrodomestici 50
Bollitore Elettrodomestici 80
Smartphone Elettronica 700

Operatore NOT: inversione della condizione

Se AND e OR impostano condizioni che devono essere vere, NOT fa il contrario: seleziona le righe per cui la condizione specificata è falsa.

Sintassi

SELECT colonna1, colonna2
FROM tabella
WHERE NOT condizione;

Esempio 1: Filtrare studenti che non hanno il voto "A"

SELECT name, age, grade
FROM students
WHERE NOT grade = 'A';

Risultato:

name age grade
Maria 19 B

Esempio 2: Estrarre prodotti che non sono nella categoria "Elettronica"

SELECT name, category, price
FROM products
WHERE NOT category = 'Elettronica';

Combinare operatori logici

Puoi combinare gli operatori logici per creare condizioni ancora più complesse. Ad esempio, se vuoi selezionare studenti con più di 18 anni e voto "A" oppure "B", puoi combinare AND e OR.

Sintassi con combinazione

SELECT colonna1, colonna2
FROM tabella
WHERE (condizione1 AND condizione2) OR condizione3;

Esempio: Studenti con più di 18 anni e voto "A" oppure studenti con voto "B"

SELECT name, age, grade
FROM students
WHERE (age > 18 AND grade = 'A') OR grade = 'B';

Risultato:

name age grade
Alex 20 A
Anna 22 A
Maria 19 B

Priorità di esecuzione degli operatori

Occhio! SQL esegue gli operatori logici in questo ordine:

  1. NOT
  2. AND
  3. OR

Puoi usare le parentesi per cambiare l'ordine di esecuzione. Senza parentesi il risultato può essere diverso da quello che ti aspetti!

Esempio: Confronto con e senza parentesi

Cosa succede in questa query?

SELECT name, age, grade
FROM students
WHERE age > 18 AND grade = 'A' OR grade = 'B';

Questa query seleziona gli studenti:

  1. Che hanno più di 18 anni e il voto "A".
  2. Che hanno il voto "B".

La priorità degli operatori porta allo stesso risultato delle parentesi:

SELECT name, age, grade
FROM students
WHERE (age > 18 AND grade = 'A') OR (grade = 'B');

Ma se aggiungiamo le parentesi così:

SELECT name, age, grade
FROM students
WHERE age > 18 AND (grade = 'A' OR grade = 'B');

Ora verranno selezionati solo gli studenti con più di 18 anni e voto "A" oppure "B". Le parentesi fanno davvero la differenza!

Errori tipici con gli operatori logici

  1. Dimenticare le parentesi. Questo può portare a risultati inaspettati, soprattutto quando combini AND e OR.
  2. Usare NOT senza capire bene quali righe vengono escluse.
  3. Usare male gli operatori logici. Tipo mettere AND invece di OR o viceversa.
  4. Condizioni troppo complesse. Condizioni molto lunghe con tanti AND, OR, NOT senza commenti possono diventare difficili da leggere.

Questi operatori sono la base di tutte le query complesse. Ora sei pronto a scrivere query che non solo funzionano, ma trovano proprio quello che ti serve!

2
Compito
SQL SELF, livello 2, lezione 2
Bloccato
Utilizzo dell'operatore `AND` per filtrare i dati
Utilizzo dell'operatore `AND` per filtrare i dati
2
Compito
SQL SELF, livello 2, lezione 2
Bloccato
Utilizzo dell'operatore `OR` per filtrare i dati
Utilizzo dell'operatore `OR` per filtrare i dati
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION