2. LENGUAJE DE MANIPULACIÓN DE DATOS (DML, DATA MANAGEMENT LANGUAGE).
2.5. EL OPERADOR IN EN SQL
En el tutorial anterior aprendimos a utilizar la palabra clave BETWEEN para filtrar registros dentro de un rango de valores. En este nuevo tema, veremos otra forma eficiente de filtrar datos, en este caso categóricos, utilizando el operador IN.
¿Qué hace el operador IN?
El operador IN nos permite especificar múltiples valores en una sola cláusula WHERE. Esto nos ahorra la necesidad de escribir múltiples condiciones con OR, haciendo que las consultas sean más legibles, cortas y fáciles de mantener.
Sintaxis del operador IN:
SELECT columna1, columna2, ...
FROM nombre_tabla
WHERE columna IN (valor1, valor2, valor3, ...);
Este comando verifica si el valor de una columna coincide con alguno de los elementos de la lista especificada.
Ejemplo Práctico:
Imaginemos que eres un analista de datos que trabaja con los registros de ventas de medicamentos en CVS Pharmacy. Una parte de los datos a los que tienes acceso luce así:
| droga | fabricante | unidades |
|---|---|---|
| Aciclovir | Biogen | 89.514 |
| Hidroclorotiazida | Roche | 97.765 |
| LBel | Eli Lilly | 126.866 |
| Topcare Tussin | Roche | 51.707 |
| Potasio de Losartán | Biogen | 61.467 |
| Motrin | Johnson & Johnson | 104.637 |
| Wal-Zan | Biogen | 128.494 |
| Enalapril Maleato | Bayer | 126.265 |
Ahora supongamos que deseas centrar tu análisis únicamente en los medicamentos fabricados por Biogen, Bayer o Eli Lilly.
En lugar de escribir múltiples condiciones con OR, puedes hacerlo de forma más concisa así:
SELECT droga, fabricante, unidades
FROM ventas_farmacia
WHERE fabricante IN ('Biogen', 'Bayer', 'Eli Lilly');
Esta consulta obtiene todas las filas donde el fabricante es uno de los valores especificados.
Comparación con el uso de OR
La consulta anterior con IN equivale a:
SELECT droga, fabricante, unidades
FROM ventas_farmacia
WHERE fabricante = 'Biogen'
OR fabricante = 'Bayer'
OR fabricante = 'Eli Lilly';
Como se puede ver, el uso de IN hace que el código sea más limpio y legible, especialmente cuando se trabajan con listas largas de valores.
Ejemplo Práctico
Instrucción:
Escribe una consulta SQL para encontrar todos los medicamentos que:
- Fueron fabricados por Roche, Bayer o AstraZeneca, y
- No vendieron entre 55.000 y 550.000 unidades.
La consulta debe mostrar las columnas: fabricante, droga y unidades vendidas.
Resultado esperado:
En resumen, la cláusula WHERE en SQL cumple una función muy similar a los filtros en Excel u otra hoja de cálculo, pero de manera más robusta y automatizable, especialmente cuando se trabaja con grandes volúmenes de datos.
Ventajas de Usar WHERE en SQL
Una de las grandes ventajas de SQL es que, en lugar de navegar por complejas interfaces gráficas, como la de Google Sheets, para filtrar datos, podemos escribir instrucciones de manera explícita. Por ejemplo, si queremos obtener solo las reseñas con menos de 4 estrellas, podemos utilizar una cláusula WHERE como esta:
WHERE stars < 4;
¿Por qué utilizar consultas con WHERE?
Además de permitirnos reducir la cantidad de filas devueltas en una consulta SQL, la cláusula WHERE es fundamental porque contribuye a mejorar el rendimiento de las consultas. Al evitar procesar datos innecesarios, se optimiza el uso de recursos en los servidores de bases de datos.
Esto es especialmente importante en entornos de almacenamiento de datos a gran escala, donde las tablas pueden tener miles de millones de registros. Ejecutar un simple SELECT * en tablas tan grandes podría generar costos elevados en servicios como AWS o Azure, e incluso afectar la eficiencia general del sistema.
Uso de WHERE con el Operador “igual” ( = )
La cláusula WHERE es muy versátil. No está limitada a operadores como menor que (<) o mayor que (>), sino que puede utilizarse también con el operador de igualdad (=) para filtrar registros específicos.
Ejemplo Práctico
Imagina que trabajas como analista de datos en Amazon y deseas obtener todas las reseñas de productos en las que el product_id sea igual a 12580. Para lograrlo, puedes escribir la siguiente consulta SQL:
SELECT * FROM revisiones
WHERE product_id = 12580;
La salida en consola de la consulta anterior se vería así:
| review_id | user_id | created_date | product_id | stars |
|---|---|---|---|---|
| 2501 | 142 | 2022-06-26 00:00:00 | 12580 | 5 |
| 4582 | 562 | 2018-06-15 00:00:00 | 12580 | 4 |
Practiquemos WHERE con = en el siguiente ejercicio de práctica.
Uso de Operadores Lógicos en SQL
La cláusula WHERE en SQL se utiliza con frecuencia en combinación con operadores lógicos, los cuales nos permiten establecer condiciones más precisas para filtrar los datos en nuestras consultas.
Entre estos operadores, encontramos no solo el de igualdad (=), sino también operadores como diferente de (!=), menor que (<), mayor que (>), entre otros.
Principales Operadores Lógicos en SQL
| Operador | Definición | Ejemplo en la Consulta | Interpretación |
|---|---|---|---|
| = | Igual a | field_name = 2 | El valor de field_name es igual a 2. |
| != | Distinto de | field_name != 5 | El valor de field_name no es igual a 5. |
| <, > | Menor que, mayor que | field_name < 5, field_name > 10 | field_name es menor que 5 o mayor que 10. |
| <=, >= | Menor o igual, mayor o igual | field_name <= 5, field_name >= 2 | field_name es menor o igual a 5, o mayor o igual a 2. |
Ejercicio de práctica de SQL WHERE
Problema de la práctica
Escribe una consulta SQL que muestre el nombre del producto y su precio, solo para productos con precio menor a $1.000.000.
Ejercicio #3
Imaginemos que trabajas en TechStore, una tienda virtual que vende productos de tecnología. Existe la siguiente tabla:producto.
| prod_id | prod_nombre | prod_categoria | prod_precio | prod_stock |
|---|---|---|---|---|
| 1 | Laptop Lenovo | Computadores | 3000000 | 10 |
| 2 | Televisor LG 55" | TV | 2500000 | 5 |
| 3 | Audífonos Sony | Audio | 150000 | 20 |
| 4 | Tablet Huawei | Tablets | 800000 | 15 |
| 5 | Parlante JBL | Audio | 350000 | 25 |
| 6 | Cámara Canon | Fotografía | 2000000 | 7 |
| 7 | Smartwatch Samsung | Wearables | 1200000 | 8 |
El gerente de compras quiere saber cuáles productos cuestan menos de $1.000.000.
Requerimiento:
Escribe una consulta SQL que muestre el nombre del producto y su precio, solo para productos con precio menor a $1.000.000.
-------------------------------------------------------------------------------------------------------------
SIGUIENTE - SQL LIKE