SELECT en SQL: qué es, cómo funciona y ejemplos prácticos

El comando SELECT es la instrucción más utilizada en SQL, ya que permite consultar datos almacenados en una o varias tablas de una base de datos.
Con SELECT podemos elegir qué columnas mostrar, aplicar filtros, ordenar resultados, agrupar información e incluso generar cálculos.

👉 En otras palabras: SELECT es la forma de “preguntar” a la base de datos y obtener respuestas.

Sintaxis básica de SELECT

SELECT columnas
FROM tabla
[WHERE condición]
[GROUP BY columna]
[HAVING condición]
[ORDER BY columna ASC | DESC]
[LIMIT n OFFSET m];

Explicación:

  • SELECT columnas → qué columnas mostrar (puede ser * para todas).
  • FROM tabla → de qué tabla obtener los datos.
  • WHERE → filtrar filas según condiciones.
  • GROUP BY → agrupar resultados.
  • HAVING → filtrar resultados agrupados.
  • ORDER BY → ordenar resultados.
  • LIMIT / OFFSET → limitar la cantidad de filas y paginar resultados.

Ejemplo simple de SELECT

Tabla clientes:

idnombreciudad
1AnaMadrid
2LuisBarcelona
3CarlaMadrid

Consulta:

SELECT nombre, ciudad
FROM clientes;

Resultado:

nombreciudad
AnaMadrid
LuisBarcelona
CarlaMadrid

👉 Devuelve las columnas nombre y ciudad de todos los clientes.

SELECT con condiciones (WHERE)

SELECT nombre, ciudad
FROM clientes
WHERE ciudad = 'Madrid';

👉 Devuelve solo a los clientes de Madrid.

SELECT con operadores lógicos

SELECT nombre, ciudad
FROM clientes
WHERE ciudad = 'Madrid' OR ciudad = 'Barcelona';

👉 Permite combinar condiciones con AND, OR y NOT.

SELECT con ordenamiento (ORDER BY)

SELECT nombre, salario
FROM empleados
ORDER BY salario DESC;

👉 Devuelve empleados ordenados por salario de mayor a menor.

SELECT con alias

Podemos renombrar columnas o tablas para mayor claridad:

SELECT nombre AS cliente, ciudad AS localidad
FROM clientes;

👉 AS crea alias más legibles en los resultados.

SELECT con funciones agregadas

  • COUNT(): contar registros.
  • SUM(): sumar valores.
  • AVG(): calcular promedios.
  • MIN() / MAX(): valores mínimo y máximo.

Ejemplo:

SELECT COUNT(*) AS total_clientes, AVG(salario) AS promedio_salario
FROM empleados;

SELECT con GROUP BY y HAVING

SELECT ciudad, COUNT(*) AS total
FROM clientes
GROUP BY ciudad
HAVING COUNT(*) > 1;

👉 Muestra ciudades con más de 1 cliente.

SELECT con JOIN

SELECT c.nombre, p.total
FROM clientes c
JOIN pedidos p ON c.id = p.cliente_id;

👉 Combina datos de varias tablas relacionadas (más en JOIN)

SELECT con subconsultas

SELECT nombre
FROM empleados
WHERE salario > (SELECT AVG(salario) FROM empleados);

👉 Devuelve empleados que ganan más que el promedio, usando una subquery.

SELECT con funciones de ventana

SELECT nombre, salario,
       ROW_NUMBER() OVER (ORDER BY salario DESC) AS ranking
FROM empleados;

👉 Numera filas en función del salario.

SELECT con LIMIT y OFFSET (paginación)

SELECT nombre, ciudad
FROM clientes
ORDER BY id
LIMIT 10 OFFSET 20;

👉 Devuelve 10 filas, empezando desde la fila 21 (para paginación).

SELECT con DISTINCT

SELECT DISTINCT ciudad
FROM clientes;

👉 Devuelve las ciudades únicas, eliminando duplicados.

SELECT con expresiones y cálculos

SELECT nombre, salario, salario * 0.1 AS bonus
FROM empleados;

👉 Calcula un 10% de bono sobre el salario.

Casos prácticos de SELECT

  1. Listar clientes de una ciudad específica.
  2. Obtener los productos más vendidos.
  3. Calcular el salario promedio de un departamento.
  4. Generar rankings de ventas.
  5. Extraer reportes para dashboards de BI.

Errores comunes al usar SELECT

  1. Usar SELECT * en producción
    👉 Trae todas las columnas, incluso las que no se necesitan, afectando rendimiento.
  2. Olvidar ORDER BY
    👉 Sin orden explícito, los resultados no están garantizados en ningún orden.
  3. Confundir WHERE con HAVING
    👉 WHERE filtra antes del agrupamiento, HAVING después.
  4. No usar alias en queries complejas
    👉 Hace que la consulta sea difícil de leer y mantener.
  5. No indexar columnas filtradas en SELECT
    👉 Puede ralentizar consultas en tablas grandes.

Buenas prácticas con SELECT

  • Siempre especificar solo las columnas necesarias.
  • Usar alias (AS) para mejorar legibilidad.
  • Acompañar consultas con comentarios si son complejas.
  • Asegurar índices en columnas de WHERE y JOIN.
  • Probar primero con LIMIT en consultas sobre tablas grandes.

SELECT en distintos motores de base de datos

  • MySQL / MariaDB: soporta LIMIT y OFFSET.
  • PostgreSQL: soporte avanzado para funciones de ventana.
  • SQL Server: usa TOP n en lugar de LIMIT.
  • Oracle: usa ROWNUM o FETCH FIRST.
  • SQLite: soporta LIMIT y OFFSET.

👉 El concepto es universal, con pequeñas diferencias de sintaxis según el motor.

Preguntas frecuentes (FAQ)

*1. ¿Qué significa SELECT ?
Devuelve todas las columnas de la tabla, pero no es recomendable en producción.

2. ¿Cuál es la diferencia entre WHERE y HAVING?
WHERE filtra filas antes de agrupar, HAVING filtra después de GROUP BY.

3. ¿Se puede usar SELECT sin FROM?
Sí, en algunos motores:

SELECT 2+2;

4. ¿SELECT siempre devuelve filas?
No, puede devolver cero si no hay coincidencias.

5. ¿Cuál es la consulta más usada en SQL?
SELECT es la más utilizada, ya que permite leer datos de la base.

Conclusión

El comando SELECT en SQL es la herramienta más importante del lenguaje:

  • Permite consultar datos en una o varias tablas.
  • Soporta filtros, agrupaciones, ordenamientos y cálculos.
  • Se utiliza en reportes, aplicaciones, análisis de datos y BI.

Dominar SELECT es el primer paso para manejar bases de datos de manera profesional.

Domina la selección de columnas y tablas en SELECT y FROM y consulta el Glosario SQL completo.

Scroll al inicio