Aprende SQL

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.

Tabla original
titleyear
Zelda1986
Mario1985
FF VII1997
Witcher 32015
Minecraft2011
GTA V2013
year < 2000
Resultado
titleyear
Zelda1986
Mario1985
FF VII1997
3 filas
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:

WHERE developer = 'Nintendo'
titledeveloper
ZeldaNintendo
MarioNintendo
FF VIISquare Enix
Witcher 3CD Projekt
GTA VRockstar
Dark SoulsFrom
2 filas
NOT
se invierte
WHERE NOT developer = 'Nintendo'
titledeveloper
ZeldaNintendo
MarioNintendo
FF VIISquare Enix
Witcher 3CD Projekt
GTA VRockstar
Dark SoulsFrom
4 filas

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

videogames5 cols

Estructura

🔑idINTEGERtitleTEXTdeveloperTEXTyearINTEGERplaytime_hoursINTEGER

Datos de ejemplo (5 filas)

idtitledeveloperyearplaytime_hours
1The Legend of ZeldaNintendo198620
2Super Mario Bros.Nintendo198510
3Final Fantasy VIISquare Enix199740
4The Witcher 3CD Projekt Red2015100
5MinecraftMojang Studios20119999
6Grand Theft Auto VRockstar Games201380
7Dark SoulsFromSoftware201160
8Portal 2Valve20118
9Red Dead Redemption 2Rockstar Games201870
10The Last of UsNaughty Dog201315
11Halo: Combat EvolvedBungie200110
12God of WarSanta Monica Studio201825

Ejercicios

Selecciona todos los videojuegos publicados en el año 2018.

sql

Selecciona el título y el año de los videojuegos con más de 50 horas de juego.

sql

Selecciona todos los videojuegos desarrollados por 'Nintendo'.

sql

Selecciona el título de los videojuegos publicados antes del año 2000.

sql

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.

sql