Filtrando datos: WHERE y operadores
Lección 02 · Fundamentos de SELECT
Filtrando datos: WHERE y operadores
La cláusula WHERE te permite filtrar las filas que devuelve una consulta. Solo se mostrarán las filas que cumplan la condición especificada.
| title | year |
|---|---|
| Zelda | 1986 |
| Mario | 1985 |
| FF VII | 1997 |
| Witcher 3 | 2015 |
| Minecraft | 2011 |
| GTA V | 2013 |
| title | year | |
|---|---|---|
| Zelda | 1986 | ✓ |
| Mario | 1985 | ✓ |
| FF VII | 1997 | ✓ |
SELECT columnas
FROM tabla
WHERE condición;
Operadores de comparación
Puedes usar los siguientes operadores en tus condiciones:
| Operador | Descripción | Ejemplo |
|---|---|---|
= |
Igual a | year = 2018 |
!= |
Distinto de | year != 2018 |
> |
Mayor que | playtime_hours > 50 |
< |
Menor que | year < 2000 |
>= |
Mayor o igual que | year >= 2010 |
<= |
Menor o igual que | playtime_hours <= 20 |
Filtrando con WHERE
Nuestra tabla videogames contiene estos datos:
Nombre de la Tabla: videogames
| id | title | developer | year | playtime_hours |
|---|---|---|---|---|
| 1 | The Legend of Zelda | Nintendo | 1986 | 20 |
| 2 | Super Mario Bros. | Nintendo | 1985 | 10 |
| 3 | Final Fantasy VII | Square Enix | 1997 | 40 |
| 4 | The Witcher 3 | CD Projekt Red | 2015 | 100 |
| 5 | Minecraft | Mojang Studios | 2011 | 9999 |
| 6 | Grand Theft Auto V | Rockstar Games | 2013 | 80 |
| 7 | Dark Souls | FromSoftware | 2011 | 60 |
| 8 | Portal 2 | Valve | 2011 | 8 |
| 9 | Red Dead Redemption 2 | Rockstar Games | 2018 | 70 |
| 10 | The Last of Us | Naughty Dog | 2013 | 15 |
| 11 | Halo: Combat Evolved | Bungie | 2001 | 10 |
| 12 | God of War | Santa Monica Studio | 2018 | 25 |
Filtrar por valor exacto
Para buscar juegos de un año específico:
SELECT * FROM videogames WHERE year = 2018;
Filtrar con comparaciones
Para buscar juegos con muchas horas de juego:
SELECT title, playtime_hours
FROM videogames
WHERE playtime_hours > 50;
Filtrar por texto
Para filtrar por texto, usa comillas simples alrededor del valor:
SELECT * FROM videogames WHERE developer = 'Nintendo';
Combinando condiciones: AND, OR y NOT
Hasta ahora hemos filtrado con una sola condición, pero en la práctica necesitarás combinar varias. Para eso existen los operadores lógicos.
AND: ambas condiciones deben cumplirse
AND devuelve solo las filas que cumplen todas las condiciones a la vez:
SELECT * FROM videogames
WHERE year >= 2010 AND playtime_hours > 50;
Esta consulta devuelve videojuegos publicados a partir de 2010 y que además tengan más de 50 horas de juego. Si un juego cumple solo una de las dos condiciones, no aparecerá.
OR: al menos una condición debe cumplirse
OR devuelve las filas que cumplen al menos una de las condiciones:
SELECT * FROM videogames
WHERE developer = 'Nintendo' OR developer = 'Valve';
Aquí obtenemos los juegos de Nintendo o de Valve. Basta con que se cumpla una de las dos.
NOT: negar una condición
NOT invierte una condición, es decir, devuelve las filas que no la cumplen:
SELECT * FROM videogames
WHERE NOT developer = 'Nintendo';
Esta consulta devuelve todos los juegos cuyo desarrollador no sea Nintendo. Visualmente, NOT intercambia qué filas pasan el filtro y cuáles no:
| title | developer | |
|---|---|---|
| Zelda | Nintendo | ✓ |
| Mario | Nintendo | ✓ |
| FF VII | Square Enix | ✗ |
| Witcher 3 | CD Projekt | ✗ |
| GTA V | Rockstar | ✗ |
| Dark Souls | From | ✗ |
| title | developer | |
|---|---|---|
| Zelda | Nintendo | ✗ |
| Mario | Nintendo | ✗ |
| FF VII | Square Enix | ✓ |
| Witcher 3 | CD Projekt | ✓ |
| GTA V | Rockstar | ✓ |
| Dark Souls | From | ✓ |
Paréntesis para controlar el orden
Cuando mezclas AND y OR en la misma consulta, el orden de evaluación importa. SQL evalúa AND antes que OR, lo que puede dar resultados inesperados. Usa paréntesis para dejar claro qué quieres agrupar:
SELECT * FROM videogames
WHERE (developer = 'Nintendo' OR developer = 'Valve')
AND year > 2000;
Sin los paréntesis, SQL interpretaría la consulta como: “juegos de Nintendo, o juegos de Valve publicados después de 2000”, que no es lo mismo. Con los paréntesis, primero se resuelve el grupo (Nintendo OR Valve) y luego se aplica la condición del año a ambos.
Tablas de esta lección
Estructura
Datos de ejemplo (5 filas)
| id | title | developer | year | playtime_hours |
|---|---|---|---|---|
| 1 | The Legend of Zelda | Nintendo | 1986 | 20 |
| 2 | Super Mario Bros. | Nintendo | 1985 | 10 |
| 3 | Final Fantasy VII | Square Enix | 1997 | 40 |
| 4 | The Witcher 3 | CD Projekt Red | 2015 | 100 |
| 5 | Minecraft | Mojang Studios | 2011 | 9999 |
| 6 | Grand Theft Auto V | Rockstar Games | 2013 | 80 |
| 7 | Dark Souls | FromSoftware | 2011 | 60 |
| 8 | Portal 2 | Valve | 2011 | 8 |
| 9 | Red Dead Redemption 2 | Rockstar Games | 2018 | 70 |
| 10 | The Last of Us | Naughty Dog | 2013 | 15 |
| 11 | Halo: Combat Evolved | Bungie | 2001 | 10 |
| 12 | God of War | Santa Monica Studio | 2018 | 25 |
Ejercicios
Selecciona todos los videojuegos publicados en el año 2018.
Selecciona el título y el año de los videojuegos con más de 50 horas de juego.
Selecciona todos los videojuegos desarrollados por 'Nintendo'.
Selecciona el título de los videojuegos publicados antes del año 2000.
Selecciona los videojuegos de 'Nintendo' o 'Valve' que además se hayan publicado después del año 2000. Usa paréntesis para agrupar el OR.