TOP

SQL-Lezione 4. Filtraggio dei dati (WHERE)

Nella maggior parte dei casi è necessario ricevere non tutti i record, ma solo quelli che soddisfano determinati criteri. Questo è il motivo per cui in SQL è presente un operatore speciale WHERE per il filtraggio del campionamento.


1. Filtraggio semplice tramite l'operatore WHERE.

Selezioniamo dalla nostra tabella, ad esempio, i record che riguardano solo un determinato prodotto. Per fare ciò, specifichiamo un parametro di selezione aggiuntivo che filtrerà i valori in base alla colonna Prodotto.

Un esempio di query per selezionare valori di testo:

Run SQLSELECT * 
FROM Sumproduct 
WHERE Product = 'Bikes'

Come puoi vedere, la condizione di selezione è racchiusa tra virgolette singole, il che è obbligatorio quando si filtrano i valori di testo. Le virgolette non sono necessarie quando si filtrano i valori numerici.

Un esempio di query per selezionare valori numerici:

Run SQLSELECT * 
FROM Sumproduct 
WHERE Amount > 40000 
ORDER BY Amount

In questo esempio, abbiamo selezionato i record in cui il ricavo delle vendite era superiore a $ 40.000 e, inoltre, abbiamo ordinato tutti i record in ordine crescente in base al campo Importo.

La tabella seguente elenca le istruzioni condizionali supportate da SQL:

Знак операції Значення
= Дорівнює
<> Не дорівнює
< Менше
<= Менше або рівне
> Більше
>= Більше або рівне
BETWEEN Між двома значеннями
IS NULL Відсутній запис

2. Filtraggio per intervallo di valori (BETWEEN)

L'operatore BETWEEN viene utilizzato per selezionare i dati che si trovano in un determinato intervallo. Nella query successiva verranno selezionati tutti i valori compresi tra $ 1000 e $ 2000 inclusi nel campo Importo.

Run SQLSELECT * 
FROM Sumproduct 
WHERE Amount BETWEEN 1000 AND 2000

L'ordine di ordinamento dipenderà dall'ordine dei campi nella richiesta. Cioè, nel nostro caso, i dati verranno prima ordinati in base alla colonna Importo, quindi in base a City.

3. Selezione di record vuoti (IS NULL)

In SQL esiste un operatore speciale per selezionare i record vuoti (chiamato NULL). Una voce vuota è qualsiasi cella della tabella in cui non è inserito alcun carattere. Se nella cella viene inserito 0 o uno spazio, il campo viene considerato riempito.

SELECT * 
FROM Sumproduct 
WHERE Amount IS NULL

Nell'esempio sopra, abbiamo intenzionalmente rimosso due valori nel campo Importo per dimostrare l'operatore NULL.

4. Filtraggio avanzato (AND, OR)

Il linguaggio SQL non si limita a filtrare in base a una condizione, per i propri scopi è possibile utilizzare costruzioni piuttosto complesse per selezionare i dati contemporaneamente in base a molti criteri. Per questo, SQL dispone di operatori aggiuntivi che estendono le capacità dell'operatore WHERE. Tali operatori sono: AND, OR, IN, NOT. Daremo diversi esempi del funzionamento di questi operatori.

Run SQLSELECT * 
FROM Sumproduct 
WHERE Amount > 40000 AND City = 'Toronto'
Run SQLSELECT * 
FROM Sumproduct 
WHERE Month = 'April' OR Month = 'March'

Combiniamo gli operatori AND e OR. Per fare ciò, faremo una selezione di biciclette (Bikes) e pattini (Skates), venduti a marzo.

Run SQLSELECT * 
FROM Sumproduct 
WHERE Product = 'Bikes' OR Product = 'Skates' AND Month = 'March'

Vediamo che nel nostro campione sono stati inclusi molti valori (oltre a marzo, anche gennaio, febbraio e aprile). Qual è il motivo? E il fatto che SQL abbia priorità di esecuzione dei comandi. Cioè, l'operatore AND ha una priorità più alta rispetto all'operatore OR, quindi sono stati selezionati per primi i record con i pattini venduti a marzo, seguiti da tutti i record relativi alle biciclette.

Quindi, per ottenere il campionamento corretto, dobbiamo modificare le priorità di esecuzione del comando. Per questo utilizzeremo le parentesi, come in matematica. Quindi verranno elaborati prima gli operatori tra parentesi e poi tutto il resto.

Run SQLSELECT * 
FROM Sumproduct 
WHERE (Product = 'Bikes' OR Product = 'Skates') AND Month = 'March'

5. Filtraggio avanzato (operatore IN)

Run SQLSELECT * 
FROM Sumproduct 
WHERE ID IN (4, 12, 58, 67)

L'operatore IN esegue la stessa funzione di OR, ma presenta diversi vantaggi:

  • Quando si lavora con elenchi lunghi, le frasi con IN sono più facili da leggere;
  • Vengono utilizzati meno operatori, il che accelera l'elaborazione delle richieste;
  • Il vantaggio più importante di IN è che nella sua costruzione è possibile utilizzare la costruzione aggiuntiva SELECT, che
  • відкриває великі можливості для створення складних підзапитів.

    6. Filtraggio avanzato (operatore NOT)

    Run SQLSELECT * 
    FROM Sumproduct 
    WHERE NOT City IN ('Toronto', 'Montreal')
    

    La parola chiave NOT consente di rimuovere i valori non necessari dall'esempio. Inoltre, la sua caratteristica è che viene posizionato prima del nome della colonna coinvolta nel filtraggio e non dopo.