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

Il filtraggio SQL 101

A volte le query SQL restituiscono molti dati di cui non si ha bisogno. In questo articolo vedremo un semplice esempio di filtraggio delle query SQL per ridurre la complessità dei dati.

La chiave per imparare a filtrare i dati in SQL è comprendere le basi dell'algebra booleana. Si tratta di un termine elegante che i matematici usano per descrivere espressioni che coinvolgono valori logici (vero/falso) e i loro operatori associati (e, o, non, ecc.). Non lasciatevi scoraggiare da questo gergo: il filtraggio è solo buon senso formalizzato dalla matematica.

Osserviamo una semplice tabella di clienti:

Questa tabella contiene tutti i clienti del nostro negozio di animali immaginario. Per ogni cliente che ha visitato il nostro negozio elenchiamo nome, cognome, città di residenza, paese di residenza, data di nascita e tipo di animale domestico.

Naturalmente, non siamo sempre interessati a guardare ogni singolo cliente nella tabella. Potremmo essere interessati a filtrare la tabella per mostrare i dati di tutti i clienti che, ad esempio, vivono a Berlino. In questo caso, filtriamo i dati con una semplice espressione nella clausola WHERE della nostra query:

SELECT * FROM customers WHERE city = 'Berlin';

In questo caso, applichiamo la condizione di filtro con l'operatore di uguaglianza (=), che si può leggere ad alta voce come "IS". In altre parole, la query di cui sopra indica al database di selezionare tutti i dati dei clienti la cui città è Berlino. Piuttosto semplice, no?

Escludere i record dall'insieme dei risultati

Come si fa a porre l'inverso della domanda precedente? Cioè, come si fa a trovare tutti i clienti tranne quelli che vivono a Berlino? Basta applicare l'operatore di esclusione (!) all'operatore di uguaglianza per ottenere l'operatore di disuguaglianza composito (!=). Quindi scriveremmo:

SELECT * FROM customers WHERE city != 'Berlin';

Filtrare le date

Vediamo ora come filtrare le date in SQL. Supponiamo di voler trovare tutti i clienti nati dopo il 1984-01-01. L'espressione logica equivalente dovrebbe chiedere una data maggiore di questa costante. Scriveremo quindi la seguente query:

SELECT * FROM customers WHERE date_of_birth > '1984-01-01';

Naturalmente, abbiamo usato l'operatore maggiore di (>). Se volessimo chiedere l'inverso, cioè recuperare i dati di tutti i clienti nati il 1984-01-01 o prima, dovremmo cambiare il segno:

SELECT * FROM customers WHERE date_of_birth <= '1984-01-01';

Condizioni composte

E se volessimo combinare alcune condizioni e trovare tutti i clienti che, ad esempio, sono nati dopo il 1984-01-01, possiedono cani e si trovano a Berlino? Concateniamo le condizioni del filtro una dopo l'altra (senza un ordine particolare) utilizzando l'operatore and. Ecco la query:

SELECT * FROM customers WHERE date_of_birth > '1984-01-01' and pet ='Dog' and city = 'Berlin';

Se vogliamo selezionare tutti i clienti che risiedono a Berlino o che possiedono un cane, dobbiamo semplicemente sostituire AND con OR:

SELECT * FROM customers WHERE pet ='Dog' or city = 'Berlin';

Volete saperne di più?

In questa semplice esercitazione avete imparato a filtrare i dati in SQL utilizzando gli operatori booleani e le condizioni. Naturalmente, questa era solo un'introduzione: l'applicazione dei filtri è un'abilità da padroneggiare per diventare abili in SQL. Per acquisire maggiore esperienza pratica con tabelle in SQL, è possibile consultare questa sezione del corso del nostro corso SQL Basics. E ricordate: la pratica è la chiave per padroneggiare SQL!