Bueno, ya sabemos cómo usar el comando SELECT. Al menos, ya aprendimos a sacar datos de la base, elegir las columnas que queremos y crear consultas que empiezan a convertir datos crudos en información útil. Es hora de añadir un poco de "filtros" a nuestra paleta mágica. Sí, hoy vamos a hablar del filtrado de datos usando operadores de comparación como =, >, < y <>.
Cuando trabajas con tablas grandes, probablemente no necesitas ver absolutamente todos los datos (a menos que quieras sumergirte en el caos). Para seleccionar solo las filas que te interesan, en SQL se usa la palabra clave WHERE. Esto te permite poner condiciones que cada fila debe cumplir para aparecer en los resultados de la consulta. Y para estas condiciones usamos operadores de comparación.
Sintaxis de filtrado con WHERE
SELECT columna1, columna2
FROM tabla
WHERE condición;
Estructura sencilla: añadimos la palabra WHERE después de indicar la tabla con FROM y escribimos la condición concreta que deben cumplir las filas.
Por ejemplo, vamos a sacar datos de la tabla students:
SELECT name, age
FROM students
WHERE age > 18;
Esta consulta selecciona solo a los estudiantes (nombre y edad) que tienen más de 18 años. Fácil, ¿no? Ahora vamos a sumergirnos en el mundo de los operadores de comparación.
Operadores de comparación principales
En SQL hay varios operadores de comparación que te ayudan a filtrar los datos como quieras. Seguro que los conoces de matemáticas, pero hay que aclarar un poco cómo funcionan aquí. Aquí tienes la lista de los más usados:
=— Igual.<>— Distinto (alternativa:!=en algunas BBDD, pero mejor usa<>porque es el estándar SQL).>— Mayor que.<— Menor que.>=— Mayor o igual que.<=— Menor o igual que.
Tabla de operadores de comparación
| Operador | Significado | Ejemplo | Resultado |
|---|---|---|---|
= |
Igual | age = 20 |
Devuelve filas donde la edad es 20 |
<> |
Distinto | age <> 20 |
Devuelve filas donde la edad no es 20 |
> |
Mayor que | age > 18 |
Devuelve filas donde la edad es mayor que 18 |
< |
Menor que | age < 18 |
Devuelve filas donde la edad es menor que 18 |
>= |
Mayor o igual que | age >= 18 |
Devuelve filas donde la edad es 18 o más |
<= |
Menor o igual que | age <= 18 |
Devuelve filas donde la edad es 18 o menos |
Ejemplos de uso de operadores de comparación
Ejemplo 1: Seleccionar estudiantes mayores de 20 años
Aquí está nuestra tabla:
| id | name | age |
|---|---|---|
| 1 | Alex Lin | 22 |
| 2 | Anna Song | 19 |
| 3 | Otto Art | 21 |
SELECT name, age
FROM students
WHERE age > 20;
Aquí ponemos la condición age > 20 para seleccionar solo los estudiantes cuya edad es mayor que 20. Si hay un estudiante con 19 años, pues no sale en los resultados.
En nuestro caso, el resultado será:
| name | age |
|---|---|
| Alex Lin | 22 |
| Otto Art | 21 |
La estudiante Anna Song no aparece porque solo tiene 19.
Ejemplo 2: Seleccionar empleados con salario de al menos 50 000
Aquí está nuestra tabla employees:
| first_name | last_name | salary |
|---|---|---|
| Julia | Kim | 48000 |
| Marcus | Lee | 52000 |
| Anya | Patel | 50000 |
| Ethan | Zhou | 61000 |
Y aquí está nuestra consulta SQL:
SELECT first_name, last_name, salary
FROM employees
WHERE salary >= 50000;
Esta consulta devuelve todos los empleados cuyo salario es igual a 50 000 o mayor que esa cantidad. ¡El igual también cuenta!
| first_name | last_name | salary |
|---|---|---|
| Marcus | Lee | 52000 |
| Anya | Patel | 50000 |
| Ethan | Zhou | 61000 |
Ejemplo 3: Seleccionar productos con precio menor de 100
| product_name | price |
|---|---|
| USB Cable | 85 |
| Wireless Mouse | 150 |
| Notebook | 60 |
| Mechanical Pencil | 45 |
SELECT product_name, price
FROM products
WHERE price < 100;
Si tienes una tienda online, con esta consulta puedes sacar todos los productos que cuestan menos de 100 (por ejemplo, para una promo de "¡Todo a 99!").
| product_name | price |
|---|---|
| USB Cable | 85 |
| Notebook | 60 |
| Mechanical Pencil | 45 |
Ejemplo 4: Excluir usuarios con un id concreto
SELECT id, username
FROM users
WHERE id <> 1;
Esta consulta selecciona todos los usuarios menos el que tiene id igual a 1. El operador <> dice "dame todos los que no sean este valor".
Tabla users:
| id | username |
|---|---|
| 1 | admin |
| 2 | elena.gray |
| 3 | tom.bishop |
| 4 | aria.noble |
Resultado de la consulta:
| id | username |
|---|---|
| 2 | elena.gray |
| 3 | tom.bishop |
| 4 | aria.noble |
Errores típicos al filtrar con operadores de comparación
Cuando empiezas a escribir consultas con filtros, es normal cometer errores. Aquí tienes un par de casos comunes que vale la pena recordar:
Problema 1: Error en el nombre de las columnas
Si escribes mal el nombre de una columna en la consulta, PostgreSQL te dará un error. Por ejemplo:
SELECT name, age
FROM students
WHERE ages > 18; -- Error: la columna "ages" no existe
Revisa siempre los nombres exactos de las columnas antes de escribir la consulta.
Problema 2: Uso incorrecto del operador de comparación
A veces, los que empiezan pueden confundir los operadores. Por ejemplo:
SELECT name, age
FROM students
WHERE age => 18; -- Error: operador incorrecto
La sintaxis correcta es >=, no =>.
Problema 3: Filtrar por valores que no existen
Si intentas filtrar filas por un valor que no está en la tabla, la consulta se ejecuta pero devuelve un resultado vacío. Por ejemplo:
SELECT name
FROM students
WHERE age = 999; -- Resultado: 0 filas
No es un error de sintaxis, pero puede confundirte si esperas ver datos.
Aplicación práctica
El filtrado de datos con operadores de comparación se usa en un montón de situaciones:
- Análisis de datos: por ejemplo, para seleccionar todos los clientes que gastaron más de 10 000 rupias.
- Informes: seleccionar empleados con salario superior a la media.
- Monitorización: seguir a los usuarios que no han estado activos en el último mes.
SQL te permite sacar rápido los datos que necesitas de tablas enormes, y los operadores de comparación son el primer paso en ese camino.
GO TO FULL VERSION