Operátor BETWEEN v MySQL vysvětlen: syntaxe, příklady a osvědčené postupy

1. Úvod

Jedním z důležitých prvků pro efektivní provádění dotazů v databázi MySQL je operátor BETWEEN. Tento operátor je mimořádně užitečný při kontrole, zda data spadají do konkrétního rozsahu. Používá se k určení rozsahů pro čísla, data i řetězce, což umožňuje efektivní extrakci dat při vyhledávání a filtrování v databázi. V tomto článku podrobně vysvětlíme, jak používat MySQL operátor BETWEEN, praktické příklady a důležité úvahy.

2. Základní syntaxe operátoru BETWEEN

Přehled operátoru BETWEEN

Operátor BETWEEN je podmínka používaná ve WHERE klauzuli k ověření, zda konkrétní hodnota sloupce spadá do definovaného rozsahu. Základní syntaxe vypadá následovně:

SELECT column_name
FROM table_name
WHERE column_name BETWEEN start_value AND end_value;

Například pokud tabulka ukládá věk zaměstnanců, můžete tento operátor použít k vytažení zaměstnanců spadajících do určitého věkového rozmezí.

Negativní forma: NOT BETWEEN

Pokud chcete vyhledávat hodnoty, které nejsou zahrnuty v určeném rozsahu, použijte negativní formu NOT BETWEEN.

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

3. Určení číselného rozsahu

Použití BETWEEN pro číselné rozsahy

Operátor BETWEEN je velmi pohodlný pro určení číselných rozsahů. Například pokud chcete vybrat data, kde jsou platy zaměstnanců mezi 50 000 a 100 000, napište dotaz takto:

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

Ukázková data:

employee_idnamesalary
1Sato45000
2Suzuki55000
3Takahashi75000
4Tanaka120000

Výsledek provedení:

employee_idnamesalary
2Suzuki55000
3Takahashi75000

Ve výše uvedeném dotazu jsou vybráni pouze zaměstnanci, jejichž platy spadají mezi 50 000 a 100 000.

Rozdíl oproti porovnávacím operátorům

Pokud byste stejnou podmínku vyjádřili pomocí porovnávacích operátorů, vypadalo by to takto:

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

Použití BETWEEN činí dotaz stručnějším a zlepšuje čitelnost. Zejména když je zapojeno více podmínek rozsahu, BETWEEN usnadňuje pochopení dotazu.

4. Určení datového rozsahu

Použití BETWEEN s datovými hodnotami

BETWEEN lze také použít k určení datových rozsahů. Například pro vytažení objednávek z tabulky orders mezi 1. lednem 2024 a 31. prosincem 2024, napište dotaz takto:

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

Ukázková data:

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

Výsledek provedení:

order_idcustomer_idorder_date
11012024-01-15
21022024-05-30

Jak je vidět výše, operátor BETWEEN extrahuje data v určeném datovém rozmezí.

Práce s časovými údaji

Pokud datové hodnoty zahrnují čas, je třeba věnovat zvláštní pozornost. Například pokud je sloupec order_date typu DATETIME a obsahuje časové hodnoty, určení rozsahu pomocí BETWEEN zahrne záznamy od půlnoci počátečního data až po 23:59:59 koncového data.

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

5. Určení řetězcového rozsahu

Použití BETWEEN s řetězcovými daty

Operátor BETWEEN lze také aplikovat na řetězcová data. Například pokud chcete vyhledat produkty, jejichž názvy spadají mezi 'A' a 'M', napište dotaz takto:

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

Ukázková data:

product_idproduct_name
1Apple
2Banana
3Mango
4Orange

Výsledek provedení:

product_idproduct_name
1Apple
2Banana
3Mango

Úvahy o abecedním pořadí

Při určení řetězcových rozsahů se předpokládá, že řetězce jsou řazeny abecedně. Vzhledem k tomu, že databáze mohou rozlišovat mezi velkými a malými písmeny podle nastavení kolace, je třeba být opatrný. Například 'a' a 'A' mohou být považovány za odlišné hodnoty.

6. Důležité úvahy při používání BETWEEN

Pořadí rozsahu má význam

When using the BETWEEN operator, be careful about the order of the start and end values. If the start value is greater than the end value, the query may return unintended results.

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

Also, since BETWEEN includes both boundary values, it is important to choose start and end values carefully.

Použití indexů a efektivita

The BETWEEN operator generally has performance comparable to standard comparison operators. However, to optimize query performance, proper indexing is essential. When indexes are correctly configured, query execution speed using the BETWEEN operator improves. For example, setting an index on a date column allows date range queries to run more efficiently.

7. Praktické dotazy a pokročilé příklady

Použití BETWEEN s více sloupci

The BETWEEN operator can also be used in combination across multiple columns. For example, when performing a range search by specifying both product price and stock quantity, the following query can be used:

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

This query searches for products with prices between 1,000 and 5,000 and stock quantities between 50 and 200.

Pokročilý příklad NOT BETWEEN

By using the negative form NOT BETWEEN, you can extract data outside a specified range. For example, to search for employees whose salaries are below 50,000 or above 100,000, write the query as follows:

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

Výsledek provedení:

employee_idnamesalary
1Sato45000
4Tanaka120000

This query retrieves employees whose salaries do not fall within the range of 50,000 to 100,000. Using NOT BETWEEN makes it easy to extract data based on inverse conditions.

8. Vizuální příklad dotazu

To visually demonstrate query results, using a simple diagram can be effective. For example, the following illustration explains how BETWEEN works:

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

Using a diagram like this makes it easier to intuitively understand whether data falls within the specified query range.

9. Shrnutí

The BETWEEN operator is a highly useful tool in MySQL when performing range-based searches. It can be applied to numeric, date, and string data, allowing queries to be written concisely and efficiently. However, it is important to understand key considerations such as inclusion of boundary values and proper index usage. By leveraging this knowledge, you can optimize database query performance and efficiently extract the data you need.

10. Odkazy

For more details and additional usage examples, refer to the official MySQL documentation and specialized database textbooks. Practicing queries yourself will further deepen your understanding of the BETWEEN operator.