Curso de SQL completo: SELECT, JOIN, agregaciones, índices y transacciones (2026)

La instrucción SELECT es la más usada en SQL. Recupera datos de una o varias tablas y devuelve un conjunto de filas y columnas llamado result set. A diferencia de otros lenguajes, SELECT es declarativo: describes qué quieres, no cómo calcularlo; el motor decide el plan de ejecución más eficiente.

En este capítulo cubrimos la forma básica del SELECT: elegir columnas, calcular expresiones, usar alias, eliminar duplicados con DISTINCT y manejar valores NULL.

SELECT *: todas las columnas

SELECT * FROM clientes;

Devuelve todas las columnas de la tabla. En producción, evita SELECT *: si la tabla cambia, el código que procesa los resultados puede romperse, y además traes columnas que quizá no necesitas, consumiendo ancho de banda y memoria innecesariamente.

Seleccionar columnas específicas

SELECT nombre, email, ciudad FROM clientes;

Solo se devuelven las columnas indicadas, en el orden que especifiques. El orden de las columnas en el SELECT no tiene por qué coincidir con el orden de las columnas en la tabla.

Alias de columna con AS

-- Alias simples
SELECT nombre AS cliente, email AS correo FROM clientes;

-- Alias con espacios (comillas dobles o backticks según motor)
SELECT nombre AS "Nombre completo", fecha_alta AS "Fecha de alta" FROM clientes;

-- En MySQL también funciona sin AS
SELECT nombre cliente, email correo FROM clientes;

Los alias son especialmente útiles cuando la columna viene de una expresión calculada y no tiene nombre propio.

Expresiones y cálculos en SELECT

-- Calcular el precio con IVA (21%)
SELECT
    nombre,
    precio                              AS precio_sin_iva,
    ROUND(precio * 1.21, 2)            AS precio_con_iva,
    stock,
    ROUND(precio * stock, 2)           AS valor_inventario
FROM productos;

-- Concatenar columnas (MySQL: CONCAT; PostgreSQL: ||)
SELECT CONCAT(nombre, ' — ', ciudad) AS cliente_ciudad FROM clientes;

DISTINCT: eliminar filas duplicadas

-- ¿En qué ciudades hay clientes?
SELECT DISTINCT ciudad FROM clientes;

-- DISTINCT afecta a todas las columnas del SELECT
SELECT DISTINCT ciudad, YEAR(fecha_alta) AS anyo FROM clientes ORDER BY anyo;

NULL: el valor desconocido

NULL significa «valor desconocido». No es cero ni cadena vacía. Cualquier operación aritmética o comparación con NULL devuelve NULL:

-- Esto siempre devuelve NULL, no TRUE:
SELECT 5 + NULL;     -- NULL
SELECT 'texto' = NULL; -- NULL

-- Para comprobar NULL, usa IS NULL / IS NOT NULL
SELECT nombre, ciudad FROM clientes WHERE ciudad IS NULL;

-- COALESCE: devuelve el primer valor no-NULL
SELECT nombre, COALESCE(ciudad, 'Sin ciudad') AS ciudad FROM clientes;

-- IFNULL (MySQL): equivalente más corto a COALESCE con dos argumentos
SELECT nombre, IFNULL(ciudad, 'Sin ciudad') AS ciudad FROM clientes;

-- NULLIF(a, b): devuelve NULL si a = b, si no devuelve a
-- Útil para evitar divisiones por cero:
SELECT total / NULLIF(unidades, 0) AS precio_medio FROM pedidos;

Entender NULL es fundamental para escribir consultas correctas. Un error común es comparar con = NULL en lugar de IS NULL: la primera expresión siempre devuelve NULL (falso), nunca encuentra filas.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP