SELECT es la sentencia más utilizada para leer información de una base de datos. Antes de combinar consultas complejas, conviene entender bien qué hace cada parte.
¿Qué problema resuelve SELECT?
Una tabla puede contener miles o millones de registros. SELECT nos permite pedir exactamente los datos que necesitamos.
Cómo pensar una consulta SELECT
Antes de escribir SQL conviene hacerse cuatro preguntas:
- ¿de qué tabla salen los datos?
- ¿qué columnas necesito?
- ¿qué filas quiero conservar?
- ¿cómo quiero ordenar o limitar el resultado?
Con ese razonamiento, la consulta deja de ser una lista de palabras reservadas y pasa a representar una pregunta concreta a la base de datos.
La estructura básica
SELECT columnas FROM tabla;
SELECT indica qué columnas queremos obtener y FROM de qué tabla provienen.
SELECT *
SELECT * FROM alumnos;
El asterisco significa “todas las columnas”. Es cómodo para aprender, pero en sistemas reales conviene seleccionar solo lo necesario.
Seleccionar columnas concretas
SELECT nombre, apellido FROM alumnos;
El resultado contiene únicamente esas dos columnas.
WHERE: filtrar filas
WHERE define una condición. Solo se devuelven las filas que la cumplen.
SELECT * FROM alumnos WHERE edad = 25;
Operadores de comparación
=igual<>o!=distinto>mayor<menor>=mayor o igual<=menor o igual
Comparar texto
SELECT * FROM alumnos WHERE ciudad = 'Santa Rosa';
Los valores de texto se escriben entre comillas.
NULL: ausencia de valor
NULL significa que no hay un valor conocido. No equivale a cero ni a una cadena vacía.
Por eso no se compara con = NULL. Debemos usar:
SELECT * FROM alumnos WHERE email IS NULL;
Y para buscar registros con valor:
WHERE email IS NOT NULL
AND
AND exige que se cumplan todas las condiciones.
SELECT * FROM alumnos WHERE ciudad = 'Santa Rosa' AND edad >= 22;
OR
OR acepta una condición u otra.
SELECT * FROM alumnos WHERE ciudad = 'Santa Rosa' OR ciudad = 'General Pico';
AND y OR juntos: usar paréntesis
Cuando combinamos AND y OR, los paréntesis hacen explícita la lógica y evitan resultados inesperados.
SELECT * FROM alumnos WHERE ciudad = 'Santa Rosa' AND (edad < 20 OR edad > 30);
Primero se evalúa lo que está entre paréntesis y luego se combina con la condición de ciudad.
NOT
NOT niega una condición.
SELECT * FROM alumnos WHERE NOT ciudad = 'Santa Rosa';
BETWEEN
Sirve para trabajar con rangos.
SELECT * FROM alumnos WHERE edad BETWEEN 22 AND 26;
IN
Evita escribir muchos OR cuando comparamos contra varios valores.
SELECT * FROM alumnos WHERE ciudad IN ('Santa Rosa', 'General Pico', 'Toay');
LIKE
LIKE busca patrones.
SELECT * FROM alumnos WHERE nombre LIKE 'A%';
% representa cero o más caracteres.
También existe _, que representa exactamente un carácter.
SELECT * FROM alumnos WHERE nombre LIKE 'A_a';
Este patrón podría coincidir con nombres como Ana, porque hay exactamente un carácter entre la A y la a.
ORDER BY
Ordena el resultado.
SELECT * FROM alumnos ORDER BY edad ASC;
ASC ordena ascendente y DESC descendente.
Ordenar por varias columnas
SELECT * FROM alumnos ORDER BY ciudad ASC, apellido ASC;
AS: poner nombres más claros al resultado
Un alias cambia el nombre mostrado de una columna sin modificar la tabla.
SELECT nombre AS alumno, email AS correo FROM alumnos;
LIMIT
Limita cuántas filas devuelve la consulta.
SELECT * FROM alumnos LIMIT 3;
OFFSET
Permite saltar registros. Es habitual en paginación.
Por ejemplo, con 10 registros por página, la segunda página podría usar LIMIT 10 OFFSET 10. En tablas muy grandes, offsets muy altos pueden volverse costosos y existen técnicas de paginación por clave más eficientes.
SELECT * FROM alumnos ORDER BY id LIMIT 2 OFFSET 2;
DISTINCT
Elimina valores repetidos del resultado.
SELECT DISTINCT ciudad FROM alumnos;
Ejemplo combinado
SELECT nombre, apellido, edad FROM alumnos WHERE ciudad = 'Santa Rosa' AND edad >= 20 ORDER BY edad DESC LIMIT 5;
Conceptualmente, esta consulta:
- parte de
alumnos; - conserva los de Santa Rosa;
- descarta menores de 20;
- ordena por edad de mayor a menor;
- devuelve solo cinco filas.
Ese orden mental es muy útil para construir consultas más grandes.
Errores comunes
- olvidar comillas en textos;
- confundir AND y OR;
- usar LIKE sin %;
- suponer que una tabla tiene orden natural;
- usar SELECT * cuando solo hacen falta dos columnas.
Ejercicios
- mostrar todos los alumnos;
- mostrar nombre y email;
- buscar mayores de 23;
- buscar alumnos de Santa Rosa;
- ordenar por edad;
- mostrar los tres mayores;
- listar ciudades sin repetir.
¿Qué sigue?
Funciones de agregación para resumir información.
¿Te sirvió esta guía? ☕
Si este contenido te ayudó y querés apoyar a Club Programador para seguir publicando ejercicios, proyectos y guías gratuitas, podés colaborar mediante:
Ruta SQL / MySQL
Ver todos los contenidos de SQL / MySQL
Descubre más desde Club Programador
Suscríbete y recibe las últimas entradas en tu correo electrónico.
2 opiniones en “SELECT en SQL: consultas, WHERE, ORDER BY, LIMIT y DISTINCT con ejemplos”