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:

Excel_Amazon

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