2. LENGUAJE DE MANIPULACIÓN DE DATOS (DML, DATA MANAGEMENT LANGUAGE).
2.7. CINCO FORMAS DE FILTRAR DATOS CON LA CLÁUSULA WHERE EN SQL
En los últimos tutoriales hemos explorado diferentes maneras de filtrar datos en SQL. A continuación, presentamos un resumen de los conceptos aprendidos:
- 1. WHERE: Permite filtrar filas en función de una o varias condiciones específicas.
- 2. AND y OR: Facilitan la combinación de múltiples condiciones en una misma consulta.
- 3. BETWEEN: Permite filtrar datos dentro de un rango de valores, incluyendo los límites.
- 4. IN: Filtra registros que coinciden con uno o varios valores definidos en una lista.
- 5. LIKE: Permite buscar patrones en columnas de tipo texto mediante el uso de comodines.
Tabla de operadores comunes para filtrar datos en SQL
| Operador | Definición | Ejemplo en consulta | Interpretación |
|---|---|---|---|
| = | Igual a | user_id = 2 | El user_id es igual a 2 |
| != | Distinto de | user_id != 5 | El user_id no es igual a 5 |
| <, > | Menor que / Mayor que | age < 5 | La edad es menor que 5 |
| <=, >= | Menor o igual / Mayor o igual | age >= 2 | La edad es mayor o igual a 2 |
| BETWEEN ... AND ... | Dentro de un rango (inclusive) | pushups BETWEEN 20 AND 40 | Las flexiones están entre 20 y 40 (inclusive) |
| IN (...) | Coincidencia con una lista de valores | first_name IN ('Bob', 'Ann', 'Joe') | El primer nombre es Bob, Ann o Joe |
| LIKE | Coincidencia con un patrón en texto | first_name LIKE 'Jo%' | El primer nombre empieza con “Jo” |
Ejercicio práctico: Filtrado de datos en SQL
Contexto:
Dispones de una tabla con 1.000 registros de clientes pertenecientes a una pequeña empresa en Australia. Necesitas extraer información específica utilizando varios de los operadores estudiados.
Requerimiento:
Escribe una consulta SQL que obtenga todos los clientes que cumplan con estas condiciones:
- Edad entre 18 y 22 años (inclusive).
- Residencia en los estados Victoria, Tasmania o Queensland.
- Su género no sea “n/a”.
- Su nombre comience con la letra ‘A’ o ‘B’.
Datos de ejemplo de la tabla customers:
| clie_id | clie_nombre | clie_genero | clie_edad | clie_codigopostal | clie_ciudad | clie_estadociudad |
|---|---|---|---|---|---|---|
| 1 | Ignacio Perez | Masculino | 30 | 5464 | Barranquilla | Atlántico |
| 2 | Graciela Espriella | Femenino | 69 | 8223 | Cartagena | Bolívar |
| 3 | Elberth Lopez | Masculino | 59 | 5661 | Santa Marta | Magdalena |
Consulta esperada:
SELECT * FROM customers
WHERE age BETWEEN 18
AND 22
AND state IN ('Victoria', 'Tasmania', 'Queensland')
AND gender != 'n/a'
AND (customer_name LIKE 'A%' OR customer_name LIKE 'B%');
Salida esperada:
| clie_id | clie_nombre | clie_genero | clie_edad | clie_codigopostal | clie_ciudad | clie_estadociudad |
|---|---|---|---|---|---|---|
| 123 | Aidan Goseling | Female | 22 | 1149 | Jordanborough | Tasmania |
| 402 | Bertrando Melonby | Femenino | 22 | 1712 | West Cooper | Tasmania |
| 692 | Bertrando Melonby | Male | 20 | 4058 | Laraview | Tasmania |
| 900 | Audrie Frotton | Femenino | 22 | 9455 | Emily East | Tasmania |
Ejercicio de práctica de SQL FILTROS
Problema de la práctica
Encuentre clientes que coincidan con multiples limitaciones de edad, estado, género y nombre.
Ejercicio #1
Contexto: Filtrado avanzado de clientes – TechStore
La empresa TechStore cuenta con una base de datos de 1.000 clientes que incluye información personal y de ubicación. El equipo de marketing necesita segmentar clientes jóvenes de ciertas regiones para una campaña promocional.
Requerimiento:
Escribe una consulta SQL que obtenga todos los clientes que cumplan las siguientes condiciones:
1. Edad entre 18 y 22 años (inclusive).
2. Residan en los estados de Victoria, Tasmania o Queensland.
3. Su género no sea “n/a”.
4. Su nombre comience con la letra ‘A’ o ‘B’.
Estructura de la tabla:
| columna | tipodato |
|---|---|
| clie_id | INTEGER |
| clie_nombre | TEXT |
| clie_genero | TEXT |
| clie_edad | INT |
| clie_codigopostal | INT |
| clie_ciudad | TEXT |
| clie_estadociudad | TEXT |
Datos de ejemplo:
| clie_id | clie_nombre | clie_genero | clie_edad | clie_codigopostal | clie_ciudad | clie_estadociudad |
|---|---|---|---|---|---|---|
| 1 | Ignacio Perez | Masculino | 30 | 5464 | Barranquilla | Atlántico |
| 2 | Graciela Espriella | Femenino | 69 | 8223 | Cartagena | Bolívar |
| 3 | Elberth Lopez | Masculino | 59 | 5661 | Santa Marta | Magdalena |
-------------------------------------------------------------------------------------------------------------
SIGUIENTE - ORDER BY