Volver a la lista de artículos Artículos
Lectura de 3 minutos

Filtrado SQL 101

A veces, las consultas SQL devuelven muchos datos que no necesitas. En este artículo, veremos un ejemplo sencillo de filtrado de consultas SQL para reducir la complejidad de los datos.

La clave para aprender a filtrar datos en SQL es entender los fundamentos del álgebra booleana. Se trata de un término elegante que los matemáticos utilizan para describir expresiones que implican valores lógicos (verdadero/falso) y sus operadores asociados (y, o, no, etc.). No se desanime por esta jerga; el filtrado no es más que el sentido común formalizado por las matemáticas.

Veamos una simple tabla de clientes:

Esta tabla contiene todos los clientes de nuestra tienda de mascotas ficticia. Enumeramos el nombre, el apellido, la ciudad de residencia, el país de residencia, la fecha de nacimiento y el tipo de mascota de cada cliente que ha visitado nuestra tienda.

Por supuesto, no siempre nos interesa ver todos y cada uno de los clientes de la tabla. Podemos estar interesados en filtrar la tabla para mostrar los datos de todos los clientes que, por ejemplo, viven en Berlín. Filtraríamos los datos utilizando una simple expresión en la cláusula WHERE de nuestra consulta:

SELECT * FROM customers WHERE city = 'Berlin';

En este caso, aplicamos la condición de filtrado con el operador de igualdad (=), que puede leerse en voz alta como "IS". En otras palabras, la consulta anterior indica a la base de datos que seleccione todos los datos de los clientes cuya ciudad sea Berlín. Muy sencillo, ¿verdad?

Excluir registros de los conjuntos de resultados

¿Qué haría para formular la pregunta inversa a la anterior? Es decir, ¿cómo encontrar todos los clientes excepto los que viven en Berlín? Simplemente aplicamos el operador de exclusión (!) al operador de igualdad para obtener el operador de desigualdad compuesto (!=). Así que escribiríamos

SELECT * FROM customers WHERE city != 'Berlin';

Filtrar fechas

Veamos ahora cómo filtrar fechas en SQL. Supongamos que queremos encontrar todos los clientes nacidos después de 1984-01-01. La expresión lógica equivalente debería pedir una fecha mayor que esta constante. Así que escribiríamos la siguiente consulta:

SELECT * FROM customers WHERE date_of_birth > '1984-01-01';

Naturalmente, utilizamos el operador mayor que (>). Si quisiéramos pedir lo inverso, es decir, recuperar los datos de todos los clientes nacidos en 1984-01-01 o antes, cambiaríamos el signo:

SELECT * FROM customers WHERE date_of_birth <= '1984-01-01';

Condiciones compuestas

¿Y si queremos combinar algunas condiciones y encontrar todos los clientes que, por ejemplo, hayan nacido después de 1984-01-01, tengan perros y estén situados en Berlín? Encadenamos nuestras condiciones de filtrado una tras otra (sin ningún orden en particular) utilizando el operador "y". Esta es la consulta:

SELECT * FROM customers WHERE date_of_birth > '1984-01-01' and pet ='Dog' and city = 'Berlin';

Si quisiéramos seleccionar todos los clientes que residen en Berlín o tienen perro, simplemente cambiaríamos el AND por el OR:

SELECT * FROM customers WHERE pet ='Dog' or city = 'Berlin';

¿Quieres saber más?

En este sencillo tutorial, has aprendido a filtrar datos en SQL utilizando operadores booleanos y condiciones. Por supuesto, esto fue sólo una introducción: la aplicación de filtros es una habilidad que debes dominar para ser competente en SQL. Para obtener más experiencia práctica con el filtrado de tablas en SQL, asegúrese de revisar esta sección de nuestro curso SQL para principiantes. Y recuerda: ¡la práctica es la clave para dominar SQL!