Lezione 3 di 20

Filtra con WHERE e ordina con ORDER BY

Trasforma una lettura completa in una risposta accurata con condizioni e ordinamento.

18minSenza account

Al termine della lezione

  • Costruisci una condizione WHERE
  • Combina più criteri
  • Ordina con ASC e DESC

WHERE mantiene le righe che soddisfano una condizione

Senza filtro, la query restituisce tutte le righe. WHERE viene scritto dopo FROM e confronta una colonna con un valore.

I testi sono circondati da apostrofi. I numeri rimangono senza apostrofi quando vengono memorizzati come numeri.

  • = uguale
  • <> diverso
  • Confronti rigorosi tra > e <
  • >= e <= includono il valore limite
Prodotti inferiori a 50 TND
SELECT produit, prix
FROM produits
WHERE prix < 50;

Combinabile con AND, OR e NOT

AND richiede che entrambe le condizioni siano vere. OR accetta che solo una condizione sia vera. Le parentesi rendono esplicita la priorità.

NOT inverte un test. Dovrebbe essere usato con una formulazione che rimanga facile da rileggere.

Due condizioni obbligatorie
SELECT produit, categorie, prix
FROM produits
WHERE categorie = 'Informatica'
  AND prix <= 100;
Quando AND e OR appaiono insieme, utilizzare le parentesi anche se si conosce la loro precedenza. Il prossimo lettore ti ringrazierà.

ORDER BY organizza il risultato

ORDER BY si verifica dopo il filtro. ASC ordina in ordine crescente ed è solitamente l'impostazione predefinita. DESC applica l'ordine decrescente.

È possibile specificare più colonne. La seconda separa le linee identiche secondo la prima.

Dal prezzo più alto a quello più basso
SELECT produit, prix
FROM produits
WHERE prix >= 10
ORDER BY prix DESC, produit ASC;

Prestare attenzione ai valori NULL

NULL significa nessun valore noto. Non è paragonabile a = NULL.

Utilizzare IS NULL per trovare i valori mancanti e IS NOT NULL per i valori popolati.

Sono entrati i clienti senza città
SELECT nom
FROM clients
WHERE ville IS NULL;

Rendere un filtro spiegabile e riproducibile

Un filtro traduce una regola aziendale. Scrivi questa regola come una frase prima di convertirla in SQL: Ordini pagati, creati nel mese di luglio, il cui importo è di almeno 100 TND. Ogni parola influenza l'operatore e i limiti.

Le date richiedono un'attenzione speciale. Per un periodo completo, un punto iniziale incluso e un punto finale escluso evitano problemi di tempo: date >= '2026-07-01' AND date < '2026-08-01'.

Una classifica deve anche essere stabile. Quando due righe hanno lo stesso valore principale, aggiungi un secondo criterio univoco per ottenere lo stesso ordine in ogni esecuzione e in ogni esportazione impaginata.

Filtro datato e ordine stabile
SELECT id_commande, date_commande, montant
FROM commandes
WHERE statut = 'Pagato'
  AND date_commande >= DATE '2026-07-01'
  AND date_commande < DATE '2026-08-01'
ORDER BY montant DESC, id_commande ASC;
Un confine, uno stato o un ordinamento implicito finisce quasi sempre per creare una discrepanza in un report.

Verifica ciò che hai capito

Visualizza i prodotti con un prezzo di almeno 40 TND, dal più economico al più costoso.

Da completare
SELECT produit, prix
FROM produits
WHERE -- condizione
ORDER BY -- ordinamento;

Progressi

Hai completato questa lezione?

La scelta resta in questo browser e si sincronizza con il tuo account quando accedi.

Lezione successiva