SELECT: Seleccionar columnas específicas

Lectura
15 min~7 min lectura
CONCEPTO CLAVE: La sentencia SELECT es la instrucción más fundamental en SQL. Te permite recuperar datos específicos de una base de datos, eligiendo exactamente qué columnas necesitas ver en lugar de obtener toda la información de golpe.

¿Qué aprenderás en esta lección?

Al finalizar esta lección, serás capaz de:

  • Comprender la estructura básica de la sentencia SELECT
  • Seleccionar columnas específicas de una tabla
  • Utilizar el asterisco (*) vs. listar columnas explícitamente
  • Aplicar alias a las columnas para mejor legibilidad
  • Evitar errores comunes al escribir consultas

Introducción a SELECT

Immagina que tienes una biblioteca enorma con miles de libros. Si quisieras encontrar información específica, no revisarías todos los libros completos, ¿verdad? En su lugar, buscarías en el catálogo los datos que necesitas. SELECT es exactamente eso: tu catálogo de consulta en el mundo de las bases de datos.

La sentencia SELECT es el punto de entrada fundamental para interactuar con cualquier base de datos relacional. Con ella, puedes especificar exactamente qué información deseas obtener, de qué tablas proviene, y cómo deseas que se presente.

📌 Nota importante: SELECT es la instrucción más utilizada en SQL y forma la base para consultas más avanzadas como JOIN, subconsultas y análisis de datos complejos.

Estructura básica de SELECT

La sintaxis más simple de SELECT es:

SELECT columna1, columna2, ...
FROM nombre_tabla;

Desglosemos cada parte:

  1. SELECT: Palabra clave que indica el inicio de la consulta
  2. columna1, columna2: Los nombres de las columnas que deseas recuperar (separadas por comas)
  3. FROM: Palabra clave que indica la tabla de origen
  4. nombre_tabla: El nombre de la tabla donde se encuentran los datos
💡 Tip profesional: En SQL, las palabras clave como SELECT y FROM no distinguen entre mayúsculas y minúsculas (son case-insensitive). Sin embargo, es convención escribirlas en mayúsculas para distinguirlas claramente de los nombres de columnas y tablas.

Seleccionar todas las columnas con el asterisco (*)

El asterisco (*) es un atajo que significa "todas las columnas". Es útil cuando quieres ver toda la información disponible en una tabla sin conocer su estructura exacta:

SELECT *
FROM empleados;

Esta consulta devolverá todas las columnas y todas las filas de la tabla empleados.

⚠️ Advertencia: Usar SELECT * en producción puede ser problemático porque: 1) Devuelve más datos de los necesarios, relentizando la consulta; 2) Si la estructura de la tabla cambia, tus resultados pueden cambiar inesperadamente; 3) Es más difícil de mantener en aplicaciones. Úsalo principalmente para exploración inicial o debugging.

Seleccionar columnas específicas

Ahora viene la parte interesante: elegir exactamente qué columnas necesitas. Supongamos que tenemos una tabla llamada clientes con la siguiente estructura:

id_clientenombreapellidoemailtelefonociudadfecha_registro
1MaríaGarcía[email protected]555-1234Madrid2024-01-15
2CarlosRodríguez[email protected]555-5678Barcelona2024-02-20
3AnaMartínez[email protected]555-9012Valencia2024-03-10

Ejemplo 1: Seleccionar nombres y apellidos

SELECT nombre, apellido
FROM clientes;

Resultado:

nombreapellido
MaríaGarcía
CarlosRodríguez
AnaMartínez

Ejemplo 2: Seleccionar email y ciudad

SELECT email, ciudad
FROM clientes;

Ejemplo 3: Seleccionar una sola columna

SELECT nombre
FROM clientes;
📌 Observación: No importa el orden en que estén definidas las columnas en la tabla original. Tú decides el orden en que aparecerán en tu resultado simplemente cambiando el orden en que las listas en el SELECT.

Alias de columnas

A veces los nombres de las columnas en la base de datos son técnicos o poco descriptivos. SQL te permite crear alias (nombres temporales) para las columnas en el resultado:

SELECT nombre AS "Nombre del cliente",
       email AS "Correo electrónico",
       ciudad AS "Ubicación"
FROM clientes;

La palabra clave AS es opcional, pero altamente recomendada para mayor claridad:

SELECT nombre "Nombre del cliente",
       email "Correo electrónico"
FROM clientes;
💡 Tip: Usa comillas dobles (" ") alrededor de alias con espacios. Algunos sistemas de bases de datos también requieren comillas para alias con caracteres especiales o palabras reservadas.

Expresiones en SELECT

No estás limitado a solo nombres de columnas. Puedes incluir expresiones que calculen valores:

SELECT nombre,
       precio AS "Precio unitario",
       cantidad,
       precio * cantidad AS "Total"
FROM productos;

Esto calculará automáticamente el total multiplicando precio por cantidad.

Ver más sobre funciones de manipulación de texto

También puedes manipular el texto de las columnas directamente en el SELECT:

SELECT UPPER(nombre) AS "Nombre en mayúsculas",
       LOWER(email) AS "Email en minúsculas",
       CONCAT(nombre, ' ', apellido) AS "Nombre completo"
FROM clientes;

Estas funciones son extremadamente útiles para formatear datos para reportes o aplicaciones.

Evitar duplicados con DISTINCT

¿Qué pasa si quieres saber qué ciudades tienen clientes, sin repetir la misma ciudad múltiples veces? Usa DISTINCT:

SELECT DISTINCT ciudad
FROM clientes;

Esto devolverá cada ciudad una sola vez, sin importar cuántos clientes tenga.

⚠️ Cuidado: DISTINCT aplica a toda la fila cuando se combina con múltiples columnas. Si escribes SELECT DISTINCT ciudad, nombre, получишь todas las combinaciones únicas de ciudad+nombre, no solo ciudades únicas.

Errores comunes y cómo evitarlos

Error comúnProblemaSolución
SELECT nombre FROM nombresOlvidar el punto y comaSiempre termina tu consulta con ;
SELECT nombre, FROM clientesComa extra antes de FROMNo pongas coma antes de FROM
SELECT nombres FROM clientesNombre de columna incorrectoVerifica que el nombre exista en la tabla
SELEC nombre FROM clientesError de escrituraRevisa la ortografía de las palabras clave
"La precisión en SQL no es solo una buena práctica, es una necesidad. Un solo carácter mal colocado puede cambiar completamente el significado de tu consulta."

Buenas prácticas recomendadas

  1. Siempre especifica las columnas: En lugar de SELECT *, lista exactamente las columnas que necesitas.
  2. Ordena tu código: Escribe cada columna en su propia línea para mejor legibilidad.
  3. Usa alias descriptivos: Haz que tu código sea auto-documentado.
  4. Incluye comentarios: Usa -- para comentar tu código cuando sea necesario.
  5. Formato consistente: Mantén un estilo de formato uniforme en todas tus consultas.
-- Ejemplo de consulta bien formateada
SELECT 
    id_cliente,
    nombre,
    apellido,
    email,
    fecha_registro AS "Fecha de registro"
FROM clientes;
--WHERE ciudad = 'Madrid';  -- Esta línea está comentada por ahora
💡 Pro tip: Desarrolla el hábito de escribir consultas con formato vertical desde el principio. Te ahorrará mucho tiempo de depuración cuando las consultas se vuelvan más complejas.

Resumen de la lección

En esta lección hemos cubierto los fundamentos de la sentencia SELECT en SQL:

  • SELECT es la instrucción fundamental para recuperar datos
  • Puedes elegir columnas específicas listándolas después de SELECT
  • El asterisco (*) selecciona todas las columnas (úsalo con precaución)
  • Los alias con AS mejoran la legibilidad de los resultados
  • DISTINCT elimina duplicados en los resultados
  • El formato y la organización son cruciales para mantenibilidad
🧠 Quiz de comprensión

¿Cuál de las siguientes consultas seleccionará únicamente el nombre y el email de la tabla "usuarios"?

  • A) SELECT * FROM usuarios;
  • B) SELECT nombre, email FROM usuarios;
  • C) SELECT ALL nombre, email FROM usuarios;
  • D) FETCH nombre, email FROM usuarios;
✅ Respuesta correcta: B) La sintaxis correcta es SELECT nombre, email FROM usuarios;. La opción A seleccionaría todas las columnas, la C usa una sintaxis incorrecta, y la D usa FETCH que tiene otro propósito en SQL.
🧠 Quiz de comprensión

¿Para qué sirve la cláusula AS en una sentencia SELECT?

  • A) Para eliminar filas duplicadas
  • B) Para renombrar columnas en el resultado de la consulta
  • C) Para ordenar los resultados
  • D) Para filtrar datos específicos
✅ Respuesta correcta: B) La cláusula AS (alias) permite renombrar las columnas en el resultado de la consulta para que sean más descriptivas o legibles. Por ejemplo: SELECT nombre AS "Nombre completo" FROM clientes;

Ejercicios prácticos

Para reforzar lo aprendido, practica con estos ejercicios usando una tabla de ejemplo llamada productos:

-- Estructura de la tabla productos:
-- id (número), nombre (texto), categoría (texto), precio (número), stock (número)

Ejercicio 1: Escribe una consulta para ver solo los nombres y precios de todos los productos.

Ejercicio 2: Selecciona todas las columnas de la tabla productos, pero usa alias para que aparezcan en español: "Identificador", "Nombre del producto", "Categoría", "Precio" y "Cantidad en stock".

Ejercicio 3: Usando DISTINCT, encuentra todas las categorías únicas de productos.

Ver soluciones

Solución Ejercicio 1:

SELECT nombre, precio
FROM productos;

Solución Ejercicio 2:

SELECT 
    id AS "Identificador",
    nombre AS "Nombre del producto",
    categoría AS "Categoría",
    precio AS "Precio",
    stock AS "Cantidad en stock"
FROM productos;

Solución Ejercicio 3:

SELECT DISTINCT categoría
FROM productos;
📌 Próxima lección: En la siguiente lección aprenderemos a usar la cláusula WHERE para filtrar filas específicas y hacer consultas aún más precisas. ¡Continúa practicando!