Aprende SQL

Búsquedas avanzadas: BETWEEN, IN y LIKE

Lección 03 · Fundamentos de SELECT

Búsquedas avanzadas: BETWEEN, IN y LIKE

Además de los operadores de comparación básicos, SQL ofrece operadores avanzados que hacen las búsquedas mucho más expresivas y potentes.

Diagrama: BETWEEN (rango de valores 2010-2015, incluidos), IN (‘Nintendo’ ‘Sony’ ‘Valve’ ‘Epic’ ‘Bungie’ → pertenece a la lista), LIKE (‘The%’ → The Legend of Zelda; ‘%of%’ → God of War; ‘_alo’ → Halo · búsqueda por patrón).

BETWEEN: Rangos de valores

BETWEEN selecciona valores dentro de un rango (ambos extremos incluidos):

SELECT * FROM videogames
WHERE year BETWEEN 2010 AND 2015;

IN: Lista de valores

IN permite comprobar si un valor coincide con alguno de una lista:

SELECT * FROM videogames
WHERE developer IN ('Nintendo', 'Valve', 'Bungie');

LIKE: Búsqueda por patrones

LIKE permite buscar texto que coincida con un patrón. Los comodines disponibles son:

Comodín Descripción Ejemplo
% Cualquier secuencia de caracteres 'The%'
_ Un solo carácter '_inecraft'
SELECT * FROM videogames
WHERE title LIKE 'The%';

Ejemplos prácticos

Usaremos nuestra tabla videogames:

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

Buscar dentro de un rango

Juegos publicados entre 2010 y 2015:

SELECT title, year FROM videogames
WHERE year BETWEEN 2010 AND 2015;

Buscar en una lista

Juegos de desarrolladores específicos:

SELECT title, developer FROM videogames
WHERE developer IN ('Nintendo', 'Valve');

Negando búsquedas: NOT

Todos los operadores que acabas de aprender tienen su versión negada con NOT. Esto te permite excluir resultados en lugar de incluirlos.

NOT BETWEEN — Excluye un rango de valores:

SELECT * FROM videogames
WHERE year NOT BETWEEN 2010 AND 2015;

Devuelve los juegos publicados fuera del rango 2010–2015.

NOT IN — Excluye valores de una lista:

SELECT * FROM videogames
WHERE developer NOT IN ('Nintendo', 'Valve');

Devuelve todos los juegos cuyo desarrollador no sea Nintendo ni Valve.

NOT LIKE — Excluye un patrón de texto:

SELECT * FROM videogames
WHERE title NOT LIKE 'The%';

Devuelve los juegos cuyo título no empieza por “The”.

Dato sobre SQLite: En SQLite, LIKE es insensible a mayúsculas y minúsculas por defecto para caracteres ASCII. Esto significa que WHERE title LIKE 'the%' y WHERE title LIKE 'The%' devuelven los mismos resultados. Ten esto en cuenta si alguna vez migras tus consultas a otro motor de base de datos como PostgreSQL, donde LIKE sí distingue entre mayúsculas y minúsculas.

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 el título y el año de los videojuegos publicados entre 2010 y 2015.

sql

Selecciona el título y el desarrollador de los videojuegos de 'Nintendo' o 'Valve'.

sql

Selecciona todos los videojuegos cuyo título empiece por 'The'.

sql

Selecciona todos los videojuegos publicados fuera del rango 2010-2015.

sql

Selecciona todos los videojuegos cuyo desarrollador no sea Nintendo ni Valve.

sql