Operador BETWEEN do MySQL Explicado: Sintaxe, Exemplos e Boas Práticas

.## 1. Introdução

Um dos elementos importantes para executar consultas de forma eficiente em um banco de dados MySQL é o operador BETWEEN. Esse operador é extremamente útil ao verificar se os dados estão dentro de um intervalo específico. Ele é usado para especificar intervalos para números, datas e strings, permitindo a extração eficiente de dados em buscas e filtragens no banco de dados. Neste artigo, explicaremos em detalhes como usar o operador BETWEEN do MySQL, exemplos práticos e considerações importantes.

2. Sintaxe Básica do Operador BETWEEN

Visão Geral do Operador BETWEEN

O operador BETWEEN é uma condição usada na cláusula WHERE para verificar se o valor de uma coluna específica está dentro de um intervalo definido. A sintaxe básica é a seguinte:

SELECT column_name
FROM table_name
WHERE column_name BETWEEN start_value AND end_value;

Por exemplo, se uma tabela armazena as idades dos funcionários, você pode usar esse operador para extrair os funcionários dentro de um intervalo de idade específico.

Forma Negativa: NOT BETWEEN

Se você quiser buscar valores que não estejam incluídos dentro de um intervalo especificado, use a forma negativa NOT BETWEEN.

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

3. Especificando um Intervalo Numérico

Usando BETWEEN para Intervalos Numéricos

O operador BETWEEN é muito conveniente para especificar intervalos numéricos. Por exemplo, se você quiser extrair dados onde os salários dos funcionários estejam entre 50.000 e 100.000, escreva a consulta da seguinte forma:

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

Dados de Exemplo:

employee_idnamesalary
1Sato45000
2Suzuki55000
3Takahashi75000
4Tanaka120000

Resultado da Execução:

employee_idnamesalary
2Suzuki55000
3Takahashi75000

Na consulta acima, apenas os funcionários cujos salários estejam entre 50.000 e 100.000 são selecionados.

Diferença em relação aos Operadores de Comparação

Se você expressar a mesma condição usando operadores de comparação, ela ficaria assim:

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

Usar BETWEEN torna a consulta mais concisa e melhora a legibilidade. Especialmente quando há múltiplas condições de intervalo, BETWEEN facilita a compreensão da consulta.

4. Especificando um Intervalo de Datas

Usando BETWEEN com Dados de Data

BETWEEN também pode ser usado para especificar intervalos de datas. Por exemplo, para extrair pedidos da tabela orders entre 1 de janeiro de 2024 e 31 de dezembro de 2024, escreva a consulta da seguinte forma:

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

Dados de Exemplo:

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

Resultado da Execução:

order_idcustomer_idorder_date
11012024-01-15
21022024-05-30

Conforme mostrado acima, o operador BETWEEN extrai os dados dentro do intervalo de datas especificado.

Tratamento de Dados de Hora

Se os dados de data incluírem hora, é necessário ter atenção especial. Por exemplo, se a coluna order_date for do tipo DATETIME e contiver valores de hora, especificar um intervalo com BETWEEN incluirá registros desde a meia‑noite da data inicial até 23:59:59 da data final.

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

5. Especificando um Intervalo de Strings

Usando BETWEEN com Dados de String

O operador BETWEEN também pode ser aplicado a dados de string. Por exemplo, se você quiser buscar produtos cujos nomes estejam entre ‘A’ e ‘M’, escreva a consulta da seguinte forma:

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

Dados de Exemplo:

product_idproduct_name
1Apple
2Banana
3Mango
4Orange

Resultado da Execução:

product_idproduct_name
1Apple
2Banana
3Mango

Considerações sobre Ordem Alfabética

Ao especificar intervalos de strings, assume‑se que as strings são ordenadas alfabeticamente. Como os bancos de dados podem distinguir entre letras maiúsculas e minúsculas dependendo das configurações de collation, é preciso ter cautela. Por exemplo, 'a' e 'A' podem ser tratados como valores diferentes.

6. Considerações Importantes ao Usar BETWEEN

A Ordem do Intervalo Importa

.

Ao usar o operador BETWEEN, tenha cuidado com a ordem dos valores inicial e final. Se o valor inicial for maior que o valor final, a consulta pode retornar resultados indesejados.

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

Além disso, como o BETWEEN inclui ambos os valores de limite, é importante escolher os valores inicial e final com atenção.

Uso de Índices e Eficiência

O operador BETWEEN geralmente tem desempenho comparável aos operadores de comparação padrão. Contudo, para otimizar o desempenho da consulta, a indexação adequada é essencial. Quando os índices são configurados corretamente, a velocidade de execução da consulta usando o operador BETWEEN melhora. Por exemplo, criar um índice em uma coluna de data permite que consultas de intervalo de datas sejam executadas de forma mais eficiente.

7. Consultas Práticas e Exemplos Avançados

Usando BETWEEN com Múltiplas Colunas

O operador BETWEEN também pode ser usado em combinação em várias colunas. Por exemplo, ao realizar uma busca por intervalo especificando tanto o preço do produto quanto a quantidade em estoque, a consulta a seguir pode ser utilizada:

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

Essa consulta procura produtos com preços entre 1.000 e 5.000 e quantidades em estoque entre 50 e 200.

Exemplo Avançado de NOT BETWEEN

Usando a forma negativa NOT BETWEEN, você pode extrair dados fora de um intervalo especificado. Por exemplo, para buscar funcionários cujos salários estejam abaixo de 50.000 ou acima de 100.000, escreva a consulta da seguinte forma:

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

Resultado da Execução:

employee_idnamesalary
1Sato45000
4Tanaka120000

Essa consulta recupera funcionários cujos salários não se encontram dentro do intervalo de 50.000 a 100.000. O uso de NOT BETWEEN facilita a extração de dados com base em condições inversas.

8. Exemplo Visual de Consulta

Para demonstrar visualmente os resultados da consulta, usar um diagrama simples pode ser eficaz. Por exemplo, a ilustração a seguir explica como o BETWEEN funciona:

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

Utilizar um diagrama como este facilita a compreensão intuitiva de se os dados estão dentro do intervalo de consulta especificado.

9. Resumo

O operador BETWEEN é uma ferramenta extremamente útil no MySQL ao realizar buscas baseadas em intervalos. Ele pode ser aplicado a dados numéricos, de data e de texto, permitindo que consultas sejam escritas de forma concisa e eficiente. No entanto, é importante entender considerações chave, como a inclusão dos valores de limite e o uso adequado de índices. Ao aproveitar esse conhecimento, você pode otimizar o desempenho das consultas ao banco de dados e extrair os dados necessários de maneira eficiente.

10. Referências

Para mais detalhes e exemplos de uso adicionais, consulte a documentação oficial do MySQL e livros especializados em bancos de dados. Praticar consultas por conta própria aprofundará ainda mais sua compreensão do operador BETWEEN.