Clausola WHERE

Completato

La WHERE clausola in PostgreSQL viene usata per filtrare le righe in una query in base alle condizioni specificate, abilitando il recupero solo dei dati che soddisfano le proprie esigenze.

Si tratta di un potente strumento di filtro con un'ampia gamma di opzioni, che consente agli utenti di combinare condizioni, applicare operatori logici e formattare output per soddisfare requisiti di query complessi.

Applicazione di filtri in base a una singola condizione

SELECT product_name, price, unit
FROM sales.products
WHERE price > 50;

Questa query recupera i prodotti con un price valore maggiore di 50.

Applicazione di filtri in base a più condizioni (AND, OR)

SELECT customer_name, country, city, NOW() AS query_time
FROM sales.customers
WHERE country = 'Germany'
AND city = 'Berlin';

Questa query recupera i clienti dalla Germania che risiedono a Berlino e proiettano una colonna calcolata a cui viene assegnato il nome query_timee il relativo valore viene prodotto dalla funzione NOW()intrinseca .

Le funzioni intrinseche sono funzioni predefinite fornite dal sistema di database per eseguire operazioni specifiche, ad esempio calcoli matematici, manipolazione delle stringhe o recupero di valori generati dal sistema. In questo esempio viene NOW() usato per recuperare la data e l'ora esatte di esecuzione della query, migliorando le informazioni dettagliate su quando i dati sono stati recuperati. Altri esempi di funzioni intrinseche sono CURRENT_DATE, che restituisce la data corrente e LENGTH(), che calcola la lunghezza di una determinata stringa.

SELECT product_name, category_id, CAST(price AS VARCHAR) as price_text
FROM sales.products
WHERE category_id = 1
OR category_id = 8;

Questa query seleziona i prodotti appartenenti alla categoria 1 (Bevande) o alla categoria 8 (Pesce). Inoltre, la CAST funzione viene usata per convertire la price colonna in formato testo, presentandola come price_text nei risultati.

Filtraggio basato su più condizioni (IN, NOT IN)

SELECT product_name, category_id, CAST(price as VARCHAR) as price_text
FROM sales.products
WHERE category_id IN (1,8);

Questa query produce lo stesso risultato della query precedente, ma usa la IN clausola anziché OR. La IN clausola filtra i record controllando se una colonna corrisponde a un valore all'interno di un elenco specificato.

SELECT customer_name, country
FROM sales.customers
WHERE country NOT IN ('USA');

Questa query trova i clienti che non si trovano negli Stati Uniti.

SELECT order_id, order_date, EXTRACT(MONTH FROM order_date) AS order_month
FROM sales.orders
WHERE EXTRACT(MONTH FROM order_date) = 1;

Questa query recupera gli ordini effettuati nel mese di gennaio usando la EXTRACT funzione per isolare il mese dalla order_date colonna e visualizzarlo come order_month.

Uso di LIKE per il confronto di schemi

SELECT customer_name, address
FROM sales.customers
WHERE customer_name LIKE 'A%';

Questa query recupera i clienti i cui nomi iniziano con "A". Il simbolo % nel valore letterale stringa è un carattere jolly usato dall'operatore LIKE per i criteri di ricerca. Rappresenta zero o più caratteri, consentendo alla query di corrispondere a qualsiasi customer_name elemento che inizia con la lettera "A" seguita da qualsiasi sequenza di caratteri. Ad esempio, i nomi come "Alice" o "Andrew" verranno inclusi nei risultati della query.

SELECT product_id, product_name
FROM sales.products
WHERE product_name LIKE '%Chocolate%';

Questa query recupera i prodotti i cui nomi contengono la parola "Chocolate". Quando viene inserita prima e dopo la parola "Chocolate" nella query, permette abbinamenti in cui "Chocolate" compare ovunque nel nome del prodotto, sia all'inizio, al centro o alla fine. Ad esempio, nomi di prodotto come "Biscotti al Cioccolato Teatime" o "Cioccolato" sarebbero inclusi nei risultati della query.

Uso di IN e NOT IN per più valori

SELECT customer_name AS full_name
FROM sales.customers
WHERE country IN ('Germany', 'France', 'UK');

Questa query recupera un elenco di clienti il cui country nome è Germania, Francia o Regno Unito. Usando l'operatore INSQL , la query controlla la presenza di corrispondenze nella colonna paese rispetto al set specificato di valori ('Germania', 'Francia', 'Regno Unito'). Se il valore nella colonna country corrisponde a una di queste tre opzioni, i nomi dei clienti corrispondenti vengono restituiti e visualizzati sotto l'alias full_name.

SELECT *
FROM sales.products
WHERE category_id NOT IN (1, 3);

Questa query recupera i prodotti non classificati nelle categorie 1 o 3.

Utilizzo di BETWEEN per i valori di intervallo

SELECT *
FROM sales.products
WHERE price BETWEEN 20 and 40;

Questa query recupera i prodotti a prezzo compreso tra 20 e 40 unità di valuta, inclusi.

L'istruzione BETWEEN in SQL viene usata per filtrare i dati all'interno di un intervallo di valori specificato. È inclusivo, ovvero include i valori limite specificati nell'intervallo. Ciò è utile per restringere i set di dati in base a valori numerici, di data o di testo (se applicabile). Fornisce un modo conciso e leggibile per definire un intervallo, anziché usare più operatori condizionali come >= e <=.

Utilizzo di IS NULL e IS NOT NULL per i valori Null

SELECT *
FROM sales.customers
WHERE postal_code IS NULL;

Questa query recupera i clienti con un oggetto postal_code mancante.

In SQL NULL rappresenta i dati mancanti o non definiti in un database.
Non equivale a zero, a una stringa vuota o a qualsiasi altro tipo di valore, ma piuttosto indica l'assenza di un valore.
Per gestire NULL, è possibile usare filtri come IS NULL per identificare i record con valori mancanti o IS NOT NULL per trovare voci con dati determinati.
Questi filtri sono utili per la pulizia dei dati, in quanto consentono di separare i record per correzione, esclusione o trattamento specializzato.