Salta ai contenuti

WHERE

WHERE serve a dire al database: mostrami solo le righe che rispettano questa condizione.

Senza WHERE, una query legge tutte le righe della tabella. Con WHERE, invece, restringi il risultato.

È come cercare in una rubrica solo le persone che vivono a Roma, invece di leggere tutti i contatti uno per uno.

SELECT nome, citta
FROM clienti
WHERE citta = 'Roma';

Questa query significa:

“Mostrami nome e città dei clienti che hanno Roma nella colonna citta.”

Se nella tabella ci sono clienti di città diverse, vedrai solo quelli di Roma.

La parte importante è questa:

WHERE citta = 'Roma'

SQL controlla la condizione una riga alla volta.

Se la riga ha Roma nella colonna citta, entra nel risultato. Se ha Milano, Napoli o qualsiasi altro valore, viene esclusa.

Nota: I testi si scrivono di solito tra apici singoli, come 'Roma'. I numeri invece si scrivono senza apici, come 18.

Ora immaginiamo una tabella ordini:

idtotale
135.00
2120.00
389.90

Per vedere solo gli ordini sopra 100, scrivi:

SELECT id, totale
FROM ordini
WHERE totale > 100;

Il risultato sarà:

idtotale
2120.00

La query non ha “saltato” le altre righe per caso. Le ha controllate e ha tenuto solo quella in cui totale > 100 era vero.

Dopo WHERE puoi usare diversi operatori:

OperatoreSignificatoEsempio
=uguale acitta = 'Roma'
<>diverso dastato <> 'annullato'
>maggiore ditotale > 100
<minore dieta < 18
>=almenoprezzo >= 10
<=al massimoquantita <= 5

Non serve impararli tutti a memoria subito. Li userai così spesso che diventeranno familiari.

Il valore che confronti deve essere scritto nel modo giusto.

Per un testo usi gli apici:

SELECT nome
FROM clienti
WHERE citta = 'Roma';

Per un numero no:

SELECT id, totale
FROM ordini
WHERE totale >= 50;

Per una data si usa spesso il formato AAAA-MM-GG:

SELECT id, data_ordine
FROM ordini
WHERE data_ordine >= '2026-01-01';

Il database capisce che quel testo rappresenta una data se la colonna data_ordine è stata creata con un tipo adatto.

Con SELECT, WHERE filtra solo quello che vedi. Non cambia i dati.

Ma più avanti userai WHERE anche con comandi come UPDATE e DELETE. Lì diventa molto più delicato, perché decide quali righe modificare o cancellare.

Attenzione: Prima di modificare o cancellare dati, controlla sempre il filtro con una SELECT. È una piccola abitudine che evita grandi guai.

  • WHERE filtra le righe.
  • La condizione può essere vera o falsa.
  • SQL controlla la condizione riga per riga.
  • Con UPDATE e DELETE, un WHERE sbagliato può toccare troppe righe.