Operador BETWEEN de MySQL explicado: sintaxis, ejemplos y buenas prácticas

1. Introducción

Uno de los elementos importantes para ejecutar consultas de forma eficiente en una base de datos MySQL es el operador BETWEEN. Este operador es extremadamente útil al comprobar si los datos se encuentran dentro de un rango específico. Se utiliza para especificar rangos de números, fechas y cadenas, lo que permite una extracción de datos eficiente en búsquedas y filtrados de bases de datos. En este artículo explicaremos en detalle cómo usar el operador BETWEEN de MySQL, ejemplos prácticos y consideraciones importantes.

2. Sintaxis básica del operador BETWEEN

Visión general del operador BETWEEN

El operador BETWEEN es una condición que se usa en la cláusula WHERE para verificar si el valor de una columna específica cae dentro de un rango definido. La sintaxis básica es la siguiente:

SELECT column_name
FROM table_name
WHERE column_name BETWEEN start_value AND end_value;

Por ejemplo, si una tabla almacena las edades de los empleados, puedes usar este operador para extraer a los empleados que se encuentren dentro de un rango de edad concreto.

Forma negativa: NOT BETWEEN

Si deseas buscar valores que no estén incluidos dentro de un rango especificado, utiliza la forma negativa NOT BETWEEN.

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

3. Especificar un rango numérico

Usar BETWEEN para rangos numéricos

El operador BETWEEN resulta muy cómodo para especificar rangos numéricos. Por ejemplo, si quieres extraer datos donde los salarios de los empleados estén entre 50 000 y 100 000, escribe la consulta de la siguiente manera:

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

Datos de ejemplo:

employee_idnamesalary
1Sato45000
2Suzuki55000
3Takahashi75000
4Tanaka120000

Resultado de la ejecución:

employee_idnamesalary
2Suzuki55000
3Takahashi75000

En la consulta anterior, solo se seleccionan los empleados cuyos salarios estén entre 50 000 y 100 000.

Diferencia con los operadores de comparación

Si expresas la misma condición usando operadores de comparación, quedaría así:

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

Utilizar BETWEEN hace que la consulta sea más concisa y mejora la legibilidad. Especialmente cuando intervienen múltiples condiciones de rango, BETWEEN simplifica la comprensión de la consulta.

4. Especificar un rango de fechas

Usar BETWEEN con datos de tipo fecha

BETWEEN también puede emplearse para especificar rangos de fechas. Por ejemplo, para extraer los pedidos de la tabla orders entre el 1 de enero de 2024 y el 31 de diciembre de 2024, escribe la consulta así:

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

Datos de ejemplo:

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

Resultado de la ejecución:

order_idcustomer_idorder_date
11012024-01-15
21022024-05-30

Como se muestra arriba, el operador BETWEEN extrae los datos dentro del rango de fechas especificado.

Manejo de datos de tipo hora

Si los datos de fecha incluyen hora, se requiere especial atención. Por ejemplo, si la columna order_date es del tipo DATETIME y contiene valores de hora, al especificar un rango con BETWEEN se incluirán los registros desde la medianoche del día de inicio hasta las 23:59:59 del día de fin.

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

5. Especificar un rango de cadenas

Usar BETWEEN con datos de tipo cadena

El operador BETWEEN también puede aplicarse a datos de tipo cadena. Por ejemplo, si deseas buscar productos cuyos nombres estén entre 'A' y 'M', escribe la consulta de la siguiente manera:

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

Datos de ejemplo:

product_idproduct_name
1Apple
2Banana
3Mango
4Orange

Resultado de la ejecución:

product_idproduct_name
1Apple
2Banana
3Mango

Consideraciones sobre el orden alfabético

Al especificar rangos de cadenas, se asume que las mismas están ordenadas alfabéticamente. Dado que las bases de datos pueden distinguir entre mayúsculas y minúsculas según la configuración de colación, se debe actuar con cautela. Por ejemplo, 'a' y 'A' pueden ser tratados como valores diferentes.

6. Consideraciones importantes al usar BETWEEN

El orden del rango es importante

.

Al usar el operador BETWEEN, tenga cuidado con el orden de los valores inicial y final. Si el valor inicial es mayor que el valor final, la consulta puede devolver resultados no deseados.

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

Además, dado que BETWEEN incluye ambos valores límite, es importante elegir los valores inicial y final con cuidado.

Uso de índices y eficiencia

El operador BETWEEN generalmente tiene un rendimiento comparable al de los operadores de comparación estándar. Sin embargo, para optimizar el rendimiento de las consultas, es esencial contar con índices adecuados. Cuando los índices están configurados correctamente, la velocidad de ejecución de la consulta que utiliza BETWEEN mejora. Por ejemplo, crear un índice sobre una columna de fecha permite que las consultas de rangos de fechas se ejecuten de forma más eficiente.

7. Consultas prácticas y ejemplos avanzados

Uso de BETWEEN con múltiples columnas

El operador BETWEEN también puede emplearse en combinación a través de varias columnas. Por ejemplo, al realizar una búsqueda por rango especificando tanto el precio del producto como la cantidad en stock, se puede usar la siguiente consulta:

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

Esta consulta busca productos con precios entre 1 000 y 5 000 y cantidades en stock entre 50 y 200.

Ejemplo avanzado de NOT BETWEEN

Utilizando la forma negativa NOT BETWEEN, puede extraer datos fuera de un rango especificado. Por ejemplo, para buscar empleados cuyos salarios estén por debajo de 50 000 o por encima de 100 000, escriba la consulta de la siguiente manera:

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

Resultado de la ejecución:

employee_idnamesalary
1Sato45000
4Tanaka120000

Esta consulta recupera a los empleados cuyos salarios no se encuentran dentro del rango de 50 000 a 100 000. Usar NOT BETWEEN facilita la extracción de datos basándose en condiciones inversas.

8. Ejemplo visual de consulta

Para demostrar visualmente los resultados de la consulta, usar un diagrama sencillo puede ser eficaz. Por ejemplo, la siguiente ilustración explica cómo funciona BETWEEN:

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

Utilizar un diagrama como este facilita la comprensión intuitiva de si los datos caen dentro del rango especificado por la consulta.

9. Resumen

El operador BETWEEN es una herramienta sumamente útil en MySQL al realizar búsquedas basadas en rangos. Puede aplicarse a datos numéricos, de fecha y de texto, lo que permite escribir consultas de forma concisa y eficiente. No obstante, es importante comprender consideraciones clave como la inclusión de los valores límite y el uso adecuado de índices. Al aprovechar este conocimiento, podrá optimizar el rendimiento de las consultas a la base de datos y extraer de manera eficiente los datos que necesita.

10. Referencias

Para obtener más detalles y ejemplos de uso adicionales, consulte la documentación oficial de MySQL y los libros especializados en bases de datos. Practicar consultas por cuenta propia profundizará aún más su comprensión del operador BETWEEN.