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,
LIKEes insensible a mayúsculas y minúsculas por defecto para caracteres ASCII. Esto significa queWHERE title LIKE 'the%'yWHERE 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, dondeLIKEsí distingue entre mayúsculas y minúsculas.
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 el título y el año de los videojuegos publicados entre 2010 y 2015.
Selecciona el título y el desarrollador de los videojuegos de 'Nintendo' o 'Valve'.
Selecciona todos los videojuegos cuyo título empiece por 'The'.
Selecciona todos los videojuegos publicados fuera del rango 2010-2015.
Selecciona todos los videojuegos cuyo desarrollador no sea Nintendo ni Valve.