SELECT en SQL: consultas, WHERE, ORDER BY, LIMIT y DISTINCT con ejemplos


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:

  1. ¿de qué tabla salen los datos?
  2. ¿qué columnas necesito?
  3. ¿qué filas quiero conservar?
  4. ¿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:

  1. parte de alumnos;
  2. conserva los de Santa Rosa;
  3. descarta menores de 20;
  4. ordena por edad de mayor a menor;
  5. 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

  1. mostrar todos los alumnos;
  2. mostrar nombre y email;
  3. buscar mayores de 23;
  4. buscar alumnos de Santa Rosa;
  5. ordenar por edad;
  6. mostrar los tres mayores;
  7. 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:

☕ Apoyar con Mercado Pago

🌎 Apoyar con PayPal


Ruta SQL / MySQL

Ver todos los contenidos de SQL / MySQL

← Introducción a SQL y MySQL

Funciones de agregación →


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”

Deja un comentario

Descubre más desde Club Programador

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo