Saltar al contenido
Bases de datos con SQL
Todos los cursos Ir al ejercicio →

Consultar con SELECT

  • ⏱ 60 minutos
  • 📶 Nivel: principiante
  • 🧩 Incluye ejercicio

💡 🎯 Al terminar esta lección podrás…

  • Elegir columnas con SELECT, usar alias y quitar repetidos con DISTINCT.
  • Filtrar filas con WHERE, AND, OR, BETWEEN, IN y LIKE.
  • Ordenar resultados y limitarlos con ORDER BY, LIMIT y OFFSET.
  • Escribir las cláusulas en el orden correcto y manejar NULL.

1.SELECT y FROM: pedir columnas

SELECT es la instrucción que más usarás. Su forma mínima tiene dos partes: qué columnas quieres (SELECT) y de qué tabla (FROM). Un asterisco * significa «todas las columnas».

Todas las columnas
SELECT * FROM productos;

Resultado esperado

idnombrecategoriapreciostock
1TecladoPeriféricos120.0015
2RatónPeriféricos45.5040
3Monitor FHDPantallas650.008
4AuricularesAudio89.900
5WebcamPeriféricos150.0012
6AltavozAudio99.0025
7Monitor 4KPantallas899.003
8Cable HDMIAccesorios15.00100

Casi siempre conviene pedir solo las columnas que necesitas, separadas por comas:

Solo algunas columnas
SELECT nombre, precio
FROM productos;

Resultado esperado

nombreprecio
Teclado120.00
Ratón45.50
Monitor FHD650.00
Auriculares89.90
Webcam150.00
Altavoz99.00
Monitor 4K899.00
Cable HDMI15.00

Dos herramientas muy útiles al elegir columnas:

Cálculos y valores únicos
-- Valor del inventario de cada producto
SELECT nombre, precio * stock AS valor
FROM productos;

-- ¿Qué categorías existen?
SELECT DISTINCT categoria
FROM productos;

Resultado esperado de la primera consulta

nombrevalor
Teclado1800.00
Ratón1820.00
Monitor FHD5200.00
Auriculares0.00
Webcam1800.00
Altavoz2475.00
Monitor 4K2697.00
Cable HDMI1500.00

Resultado esperado de la segunda consulta

categoria
Periféricos
Pantallas
Audio
Accesorios

📌 Nota · Un SELECT no cambia nada

Consultar es de solo lectura: ni SELECT ni los cálculos modifican los datos guardados. Puedes probar todo sin miedo. Los cambios llegan en la lección 3.

2.WHERE: filtrar filas

Sin WHERE obtienes todas las filas. Con WHERE indicas una condición y solo se devuelven las filas que la cumplen.

Productos de más de 100
SELECT nombre, precio
FROM productos
WHERE precio > 100;

Resultado esperado

nombreprecio
Teclado120.00
Monitor FHD650.00
Webcam150.00
Monitor 4K899.00
OperadorSignificadoEjemplo
=igual acategoria = 'Audio'
<> o !=distinto decategoria <> 'Audio'
> · >=mayor que · mayor o igualstock >= 10
< · <=menor que · menor o igualprecio < 50

⚠️ Importante · Texto entre comillas simples

Los valores de texto van entre comillas simples: 'Audio'. Las comillas dobles "…" son para nombres de tablas o columnas, y en PostgreSQL usarlas con un texto da error. Los números van sin comillas. Además, la comparación = con texto distingue mayúsculas de minúsculas: 'audio' no es igual a 'Audio'.

Combinar condiciones: AND, OR, NOT

Combinaciones
-- Periféricos que tengan stock
SELECT nombre, categoria, stock
FROM productos
WHERE categoria = 'Periféricos' AND stock > 0;

-- Con paréntesis, para que quede claro
SELECT nombre, categoria, precio
FROM productos
WHERE (categoria = 'Audio' OR categoria = 'Pantallas')
  AND precio < 700;

Resultado de la primera consulta

nombrecategoriastock
TecladoPeriféricos15
RatónPeriféricos40
WebcamPeriféricos12

Resultado de la segunda consulta

nombrecategoriaprecio
Monitor FHDPantallas650.00
AuricularesAudio89.90
AltavozAudio99.00

💡 Consejo · Usa paréntesis cuando mezcles AND y OR

AND se evalúa antes que OR, como la multiplicación antes que la suma. Sin paréntesis, a OR b AND c significa a OR (b AND c), y suele no ser lo que querías.

BETWEEN e IN

Dos atajos que hacen las consultas más legibles: BETWEEN comprueba un rango (incluye los dos extremos) e IN comprueba si el valor está en una lista.

Rango y lista
SELECT nombre, precio
FROM productos
WHERE precio BETWEEN 40 AND 100;

SELECT nombre, categoria
FROM productos
WHERE categoria IN ('Audio', 'Accesorios');

Resultado de la primera consulta

nombreprecio
Ratón45.50
Auriculares89.90
Altavoz99.00

Resultado de la segunda consulta

nombrecategoria
AuricularesAudio
AltavozAudio
Cable HDMIAccesorios

3.LIKE: buscar patrones de texto

LIKE busca texto que se parezca a un patrón. Tiene dos comodines:

PatrónEncuentra…
'Monitor%'Textos que empiezan por Monitor
'%or'Textos que terminan en «or»
'%cam%'Textos que contienen «cam»
'Ca_le HDMI'«Cable HDMI», pero el cuarto carácter puede ser cualquiera
Buscar por nombre
SELECT nombre, precio
FROM productos
WHERE nombre LIKE 'Monitor%';

SELECT nombre
FROM productos
WHERE nombre LIKE '%cam%';

Resultado de la primera consulta

nombreprecio
Monitor FHD650.00
Monitor 4K899.00

Resultado de la segunda consulta

nombre
Webcam

⚠️ Importante · Mayúsculas: SQLite y PostgreSQL difieren

En SQLite, LIKE ignora mayúsculas y minúsculas para las letras ASCII ('%cam%' encuentra «Webcam»). En PostgreSQL, LIKE sí distingue mayúsculas: para ignorarlas se usa ILIKE (nombre ILIKE '%cam%').

Valores vacíos: NULL

NULL significa «no hay valor» (dato desconocido o ausente). No es cero ni un texto vacío, y por eso no se compara con =: precio = NULL nunca es verdadero. Se usa IS NULL o IS NOT NULL.

Comparar con NULL
SELECT * FROM productos WHERE precio IS NULL;      -- correcto
SELECT * FROM productos WHERE precio = NULL;       -- NO funciona: nunca devuelve filas

📌 Nota · En nuestra tabla no hay NULL

Las columnas de productos son NOT NULL, así que ninguna consulta de arriba devolvería filas. Lo verás en acción cuando diseñes tus propias tablas en la lección 4.

4.ORDER BY, LIMIT y OFFSET

Una consulta no garantiza ningún orden salvo que lo pidas. ORDER BY ordena el resultado; ASC es ascendente (por defecto) y DESC descendente. Puedes ordenar por varias columnas separándolas con comas.

Ordenar
-- Del más caro al más barato
SELECT nombre, precio
FROM productos
ORDER BY precio DESC;

-- Por categoría y, dentro de cada una, por precio
SELECT categoria, nombre, precio
FROM productos
ORDER BY categoria ASC, precio DESC;

Resultado de la primera consulta

nombreprecio
Monitor 4K899.00
Monitor FHD650.00
Webcam150.00
Teclado120.00
Altavoz99.00
Auriculares89.90
Ratón45.50
Cable HDMI15.00

Resultado de la segunda consulta

categorianombreprecio
AccesoriosCable HDMI15.00
AudioAltavoz99.00
AudioAuriculares89.90
PantallasMonitor 4K899.00
PantallasMonitor FHD650.00
PeriféricosWebcam150.00
PeriféricosTeclado120.00
PeriféricosRatón45.50

LIMIT restringe cuántas filas se devuelven y OFFSET indica cuántas saltar antes de empezar. Juntos sirven para paginar resultados.

Los tres más caros y la página siguiente
SELECT nombre, precio FROM productos
ORDER BY precio DESC
LIMIT 3;

-- Siguientes tres (página 2)
SELECT nombre, precio FROM productos
ORDER BY precio DESC
LIMIT 3 OFFSET 3;

Resultado de la primera consulta

nombreprecio
Monitor 4K899.00
Monitor FHD650.00
Webcam150.00

Resultado de la segunda consulta

nombreprecio
Teclado120.00
Altavoz99.00
Auriculares89.90

💡 Consejo · LIMIT casi siempre va con ORDER BY

Sin ORDER BY, «las tres primeras filas» no significan nada concreto: el gestor puede devolverlas en cualquier orden. Para obtener «los tres más caros» ordena primero y limita después.

5.El orden de las cláusulas

Las cláusulas se escriben siempre en este orden. Todas son opcionales salvo SELECT (y FROM cuando se consulta una tabla):

Estructura completa
SELECT   columnas
FROM     tabla
WHERE    condición
ORDER BY columnas
LIMIT    cantidad OFFSET saltar;
  1. FROM: el gestor toma la tabla.
  2. WHERE: se quedan solo las filas que cumplen la condición.
  3. SELECT: se eligen y calculan las columnas.
  4. ORDER BY: se ordena el resultado.
  5. LIMIT / OFFSET: se recorta el resultado.

Esa es la secuencia en la que el gestor piensa la consulta, y explica por qué no puedes usar un alias de SELECT dentro de WHERE.

6.Pruébalo: simulador de consultas

Este simulador funciona con la tabla productos y construye la consulta SQL mientras eliges. Cambia el filtro, el orden y el límite y observa tanto la consulta como las filas devueltas. (Es una simulación en tu navegador: no ejecuta SQL real, pero se comporta igual que SQLite con estas opciones.)

🧪 Simulador de SELECT
WHERE
ORDER BY LIMIT

    

🧪 Ejemplo · Experimentos para probar

1) Columna categoria, operador =, valor Audio. 2) Columna nombre, operador LIKE, valor %mon%. 3) Columna stock, operador <=, valor 10, ordenando por stock ascendente. 4) Quita el filtro y pon LIMIT 3 ordenando por precio descendente.

7.Errores frecuentes

📒 Apuntes para llevar

  • SELECT columnas FROM tabla lee datos y no modifica nada; * significa todas las columnas.
  • AS pone un alias y DISTINCT quita los resultados repetidos.
  • WHERE filtra filas con =, <>, >, <, >=, <=, BETWEEN, IN y LIKE.
  • El texto va entre comillas simples; los números, sin comillas.
  • AND exige las dos condiciones, OR una de ellas; usa paréntesis para mezclarlas.
  • LIKE usa % (cualquier cantidad de caracteres) y _ (uno solo); con NULL se usa IS NULL.
  • ORDER BY col [ASC|DESC] ordena; LIMIT n OFFSET m recorta y pagina.
  • Orden de escritura: SELECT … FROM … WHERE … ORDER BY … LIMIT.

8.Glosario

TérminoSignificado
Consulta (query)Instrucción SQL que pide datos a la base de datos.
CláusulaCada parte de una instrucción: FROM, WHERE, ORDER BY…
AliasNombre alternativo para una columna o un cálculo, creado con AS.
CondiciónExpresión que es verdadera o falsa para cada fila y decide si entra en el resultado.
ComodínCarácter especial de LIKE: % (cualquier cantidad) o _ (uno).
NULLMarca de «sin valor»; no es cero ni texto vacío.
PaginaciónDividir un resultado largo en páginas con LIMIT y OFFSET.

🧠 Comprueba lo aprendido

Elige una respuesta en cada pregunta. Verás al instante si acertaste y por qué.

¿Qué devuelve SELECT nombre FROM productos WHERE precio < 50; con la tabla de ejemplo?

¿Cómo se escribe correctamente la condición para texto?

¿Qué patrón encuentra los nombres que empiezan por «Mon»?

¿Cómo se obtienen los 3 productos más baratos?

¿Cómo se buscan las filas sin precio (valor NULL)?

Tu progreso se guarda en este navegador y se refleja en el índice del curso.

💡 🚀 ¡Ahora te toca!

La práctica fija lo aprendido. Pasa al ejercicio de esta lección.

Ir al ejercicio