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_id | name | salary |
|---|---|---|
| 1 | Sato | 45000 |
| 2 | Suzuki | 55000 |
| 3 | Takahashi | 75000 |
| 4 | Tanaka | 120000 |
Výsledek provedení:
| employee_id | name | salary |
|---|---|---|
| 2 | Suzuki | 55000 |
| 3 | Takahashi | 75000 |
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_id | customer_id | order_date |
|---|---|---|
| 1 | 101 | 2024-01-15 |
| 2 | 102 | 2024-05-30 |
| 3 | 103 | 2025-03-01 |
Výsledek provedení:
| order_id | customer_id | order_date |
|---|---|---|
| 1 | 101 | 2024-01-15 |
| 2 | 102 | 2024-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_id | product_name |
|---|---|
| 1 | Apple |
| 2 | Banana |
| 3 | Mango |
| 4 | Orange |
Výsledek provedení:
| product_id | product_name |
|---|---|
| 1 | Apple |
| 2 | Banana |
| 3 | Mango |
Ú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_id | name | salary |
|---|---|---|
| 1 | Sato | 45000 |
| 4 | Tanaka | 120000 |
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.


