0Pricing
SQL Academy · Lezione

Filtri WHERE: operatori di confronto e logici

Filtri le righe con =, <>, , AND, OR e NOT e comprenda la precedenza degli operatori e l’uso delle parentesi

Filtri WHERE: operatori di confronto e logici è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.

Il ruolo di WHERE

WHERE filtra le righe prima del raggruppamento o dell'aggregazione. Vengono restituite solo le righe per cui il predicato è TRUE.

Operatori di confronto

I confronti standard funzionano con tutti i tipi confrontabili:

SELECT * FROM products WHERE price > 100;
SELECT * FROM products WHERE price >= 100;
SELECT * FROM products WHERE price < 50;
SELECT * FROM products WHERE price <= 50;
SELECT * FROM products WHERE category = 'books';
SELECT * FROM products WHERE category <> 'books';   -- != also works

AND, OR, NOT

Combinare i predicati con gli operatori logici:

-- Both true:
SELECT * FROM products
WHERE category = 'books' AND price < 50;

-- Either true:
SELECT * FROM products
WHERE category = 'books' OR category = 'music';

-- Negation:
SELECT * FROM products
WHERE NOT (category = 'books');

Precedenza degli operatori

Precedenza (dalla più alta alla più bassa): NOT → AND → OR. Racchiudete sempre tra parentesi i predicati complessi per maggiore chiarezza:

-- Without parens — almost certainly wrong:
SELECT * FROM orders
WHERE status = 'open' OR status = 'pending' AND total > 100;
-- means:  status = open  OR  (status = pending AND total > 100)

-- With parens — clearer:
SELECT * FROM orders
WHERE (status = 'open' OR status = 'pending') AND total > 100;

IN e NOT IN

Una scorciatoia per molte condizioni OR:

SELECT * FROM users
WHERE country IN ('US', 'CA', 'GB', 'AU');

-- Equivalent to:
SELECT * FROM users
WHERE country = 'US' OR country = 'CA' OR country = 'GB' OR country = 'AU';

BETWEEN

Verifica di un intervallo inclusivo:

SELECT * FROM orders
WHERE total BETWEEN 100 AND 500;

-- Equivalent to:  total >= 100 AND total <= 500

Filtri sicuri rispetto a NULL

I confronti con NULL restituiscono NULL (non FALSE) e le righe con NULL vengono eliminate da WHERE. Quando necessario, utilizzate esplicitamente IS NULL / IS NOT NULL:

-- Returns users where deleted_at is unknown:
SELECT * FROM users WHERE deleted_at IS NULL;

-- IS DISTINCT FROM treats NULL as a comparable value:
SELECT * FROM events WHERE status IS DISTINCT FROM 'closed';

Colonne booleane

Una colonna BOOLEAN non richiede alcun confronto:

SELECT * FROM tasks WHERE done;       -- = TRUE
SELECT * FROM tasks WHERE NOT done;    -- = FALSE or NULL
SELECT * FROM tasks WHERE done IS NOT TRUE;  -- FALSE or NULL only

Corrispondenza di pattern con LIKE

% corrisponde a qualsiasi stringa, mentre _ corrisponde esattamente a un carattere:

SELECT * FROM users WHERE email LIKE '%@gmail.com';
SELECT * FROM products WHERE sku LIKE 'A_-___';

-- Case-insensitive in PostgreSQL:
SELECT * FROM users WHERE email ILIKE '%@GMAIL.com';

Filtri e prestazioni

Le clausole WHERE sono il contesto in cui gli indici danno il meglio. I filtri di uguaglianza (=) e di intervallo (<, BETWEEN) sulle colonne indicizzate trasformano le scansioni complete della tabella in ricerche che richiedono pochi millisecondi.

Ordine di valutazione

Dal punto di vista logico, il database valuta: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT. Pertanto WHERE vede le righe non elaborate; gli alias delle colonne definiti in SELECT non sono ancora disponibili.

-- This fails — alias not visible in WHERE:
SELECT total * 0.9 AS discounted
FROM orders WHERE discounted > 100;     -- ERROR

-- Repeat the expression instead, or wrap in a subquery.

Riepilogo

WHERE è lo strumento principale per selezionare le righe.

  • Operatori standard di confronto e logici
  • Racchiuda tra parentesi le combinazioni di AND/OR
  • Utilizzi IS NULL, mai = NULL
  • WHERE sulle colonne indicizzate è veloce

Verifica rapida

Quale predicato mantiene solo le righe in cui age è maggiore o uguale a 18 e country è US?

Domande Frequenti

La lezione «Filtri WHERE: operatori di confronto e logici» è gratuita?

Sì — il testo completo di «Filtri WHERE: operatori di confronto e logici» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.

Cosa imparerò in «Filtri WHERE: operatori di confronto e logici»?

Filtri le righe con =, <>, , AND, OR e NOT e comprenda la precedenza degli operatori e l’uso delle parentesi Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare SQL Academy?

Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Filtri WHERE: operatori di confronto e logici»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione SQL Academy?

Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Selezionare colonne ed espressioni
  2. Filtri WHERE: operatori di confronto e logici
  3. ORDER BY con una o più colonne
  4. Basi di LIMIT, OFFSET e paginazione
← Torna a SQL Academy