Operatore BETWEEN di MySQL spiegato: sintassi, esempi e migliori pratiche

1. Introduzione

Uno degli elementi importanti per eseguire query in modo efficiente in un database MySQL è l’operatore BETWEEN. Questo operatore è estremamente utile quando si verifica se i dati rientrano in un intervallo specifico. Viene utilizzato per specificare intervalli per numeri, date e stringhe, consentendo un’estrazione efficiente dei dati nelle ricerche e nei filtri del database. In questo articolo spiegheremo in dettaglio come utilizzare l’operatore MySQL BETWEEN, fornendo esempi pratici e considerazioni importanti.

2. Sintassi di base dell’operatore BETWEEN

Panoramica dell’operatore BETWEEN

L’operatore BETWEEN è una condizione usata nella clausola WHERE per verificare se il valore di una colonna specifica rientra in un intervallo definito. La sintassi di base è la seguente:

SELECT column_name
FROM table_name
WHERE column_name BETWEEN start_value AND end_value;

Ad esempio, se una tabella memorizza le età dei dipendenti, è possibile utilizzare questo operatore per estrarre i dipendenti che rientrano in un intervallo di età specifico.

Forma negativa: NOT BETWEEN

Se si desidera cercare valori che non sono inclusi in un intervallo specificato, si utilizza la forma negativa NOT BETWEEN.

SELECT column_name
FROM table_name
WHERE column_name NOT BETWEEN start_value AND end_value;

3. Specificare un intervallo numerico

Utilizzare BETWEEN per intervalli numerici

L’operatore BETWEEN è molto comodo per specificare intervalli numerici. Ad esempio, se si vuole estrarre i dati in cui gli stipendi dei dipendenti sono compresi tra 50.000 e 100.000, si scrive la query come segue:

SELECT employee_id, name, salary
FROM employees
WHERE salary BETWEEN 50000 AND 100000;

Dati di esempio:

employee_idnamesalary
1Sato45000
2Suzuki55000
3Takahashi75000
4Tanaka120000

Risultato dell’esecuzione:

employee_idnamesalary
2Suzuki55000
3Takahashi75000

Nella query sopra, vengono selezionati solo i dipendenti i cui stipendi rientrano tra 50.000 e 100.000.

Differenza rispetto agli operatori di confronto

Se si esprime la stessa condizione usando gli operatori di confronto, apparirebbe così:

SELECT employee_id, name, salary
FROM employees
WHERE salary >= 50000 AND salary <= 100000;

L’uso di BETWEEN rende la query più concisa e migliora la leggibilità. In particolare, quando sono coinvolte più condizioni di intervallo, BETWEEN semplifica notevolmente la comprensione della query.

4. Specificare un intervallo di date

Utilizzare BETWEEN con dati di tipo data

BETWEEN può essere usato anche per specificare intervalli di date. Ad esempio, per estrarre gli ordini dalla tabella orders compresi tra il 1 gennaio 2024 e il 31 dicembre 2024, si scrive la query come segue:

SELECT order_id, customer_id, order_date
FROM orders
WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31';

Dati di esempio:

order_idcustomer_idorder_date
11012024-01-15
21022024-05-30
31032025-03-01

Risultato dell’esecuzione:

order_idcustomer_idorder_date
11012024-01-15
21022024-05-30

Come mostrato sopra, l’operatore BETWEEN estrae i dati all’interno dell’intervallo di date specificato.

Gestione dei dati temporali

Se i dati di tipo data includono anche l’ora, è necessario prestare particolare attenzione. Ad esempio, se la colonna order_date è di tipo DATETIME e contiene valori orari, specificare un intervallo con BETWEEN includerà i record dalla mezzanotte della data di inizio fino alle 23:59:59 della data di fine.

WHERE order_date BETWEEN '2024-01-01 00:00:00' AND '2024-12-31 23:59:59';

5. Specificare un intervallo di stringhe

Utilizzare BETWEEN con dati di tipo stringa

L’operatore BETWEEN può essere applicato anche ai dati di tipo stringa. Ad esempio, se si desidera cercare i prodotti i cui nomi rientrano tra ‘A’ e ‘M’, si scrive la query come segue:

SELECT product_id, product_name
FROM products
WHERE product_name BETWEEN 'A' AND 'M';

Dati di esempio:

product_idproduct_name
1Apple
2Banana
3Mango
4Orange

Risultato dell’esecuzione:

product_idproduct_name
1Apple
2Banana
3Mango

Considerazioni sull’ordine alfabetico

Quando si specificano intervalli di stringhe, si presume che le stringhe siano ordinate alfabeticamente. Poiché i database possono distinguere tra lettere maiuscole e minuscole a seconda delle impostazioni di collazione, è necessario fare attenzione. Ad esempio, 'a' e 'A' potrebbero essere trattati come valori diversi.

6. Considerazioni importanti quando si utilizza BETWEEN

L’ordine dell’intervallo è importante

Quando si utilizza l’operatore BETWEEN, fare attenzione all’ordine dei valori di inizio e fine. Se il valore di inizio è maggiore del valore di fine, la query potrebbe restituire risultati non desiderati.

SELECT * FROM table_name WHERE column_name BETWEEN 100 AND 50;  -- unintended result

Inoltre, poiché BETWEEN include entrambi i valori di confine, è importante scegliere con attenzione i valori di inizio e fine.

Utilizzo degli Indici e Efficienza

L’operatore BETWEEN ha generalmente prestazioni comparabili a quelle degli operatori di confronto standard. Tuttavia, per ottimizzare le prestazioni delle query, è essenziale un indicizzazione corretta. Quando gli indici sono configurati correttamente, la velocità di esecuzione delle query che utilizzano l’operatore BETWEEN migliora. Ad esempio, impostare un indice su una colonna data consente alle query di intervallo di date di essere eseguite in modo più efficiente.

7. Query Pratiche ed Esempi Avanzati

Utilizzo di BETWEEN con più Colonne

L’operatore BETWEEN può anche essere usato in combinazione su più colonne. Ad esempio, quando si esegue una ricerca per intervallo specificando sia il prezzo del prodotto sia la quantità in magazzino, è possibile utilizzare la seguente query:

SELECT product_name, price, stock
FROM products
WHERE price BETWEEN 1000 AND 5000
AND stock BETWEEN 50 AND 200;

Questa query cerca i prodotti con prezzi compresi tra 1.000 e 5.000 e quantità in magazzino comprese tra 50 e 200.

Esempio Avanzato di NOT BETWEEN

Utilizzando la forma negativa NOT BETWEEN, è possibile estrarre dati al di fuori di un intervallo specificato. Ad esempio, per cercare i dipendenti i cui salari sono inferiori a 50.000 o superiori a 100.000, scrivi la query come segue:

SELECT employee_id, name, salary
FROM employees
WHERE salary NOT BETWEEN 50000 AND 100000;

Risultato dell’Esecuzione:

employee_idnamesalary
1Sato45000
4Tanaka120000

Questa query recupera i dipendenti i cui salari non rientrano nell’intervallo tra 50.000 e 100.000. L’uso di NOT BETWEEN semplifica l’estrazione di dati basati su condizioni inverse.

8. Esempio Visivo di Query

Per dimostrare visivamente i risultati delle query, l’uso di un diagramma semplice può essere efficace. Ad esempio, la seguente illustrazione spiega come funziona BETWEEN:

Price range: [----- 1000 ---- 5000 -----]
Product A price: 3000 (within range)
Product B price: 6000 (outside range)

Utilizzare un diagramma come questo rende più facile comprendere intuitivamente se i dati rientrano nell’intervallo specificato dalla query.

9. Riepilogo

L’operatore BETWEEN è uno strumento molto utile in MySQL per eseguire ricerche basate su intervalli. Può essere applicato a dati numerici, di data e di stringa, consentendo di scrivere query in modo conciso ed efficiente. Tuttavia, è importante comprendere considerazioni chiave come l’inclusione dei valori di confine e l’uso corretto degli indici. Sfruttando queste conoscenze, è possibile ottimizzare le prestazioni delle query del database ed estrarre in modo efficiente i dati di cui si ha bisogno.

10. Riferimenti

Per ulteriori dettagli ed esempi di utilizzo aggiuntivi, consultare la documentazione ufficiale di MySQL e i libri di testo specializzati sui database. Esercitarsi con le query personalmente approfondirà ulteriormente la comprensione dell’operatore BETWEEN.