💻 Tecnología

Aprende a redactar tus primeras consultas SQL sin morir en el intento

📅 7 min de lectura ✍️ SolveItHow Editorial Team
Aprende a redactar tus primeras consultas SQL sin morir en el intento
Respuesta Rápida

Escribe consultas SQL básicas usando SELECT para elegir columnas, FROM para indicar la tabla y WHERE para filtrar filas. Con SELECT nombre, edad FROM usuarios WHERE edad > 18 obtienes los mayores de edad.

Experiencia Personal
Analista de datos autodidacta

"Empecé a trabajar como analista de datos en una startup pequeña. El primer día, mi jefe me pidió un informe de ventas del trimestre. Escribí la consulta, la ejecuté y me dio 0 filas. Resulta que había usado comillas dobles en lugar de simples para la fecha. Me sentí un idiota, pero ese error me enseñó más que cualquier tutorial."

Mi primera consulta SQL fue un desastre. Tenía una tabla con 10,000 clientes y quería los que hubieran comprado en el último mes. Escribí SELECT * FROM clientes WHERE fecha > '2023-01-01' y me devolvió todos, porque la fecha estaba en otro formato. Perdí una tarde entera. Desde entonces, aprendí que las consultas SQL no son magia: son lógica pura y un par de reglas básicas.

🔍 Por qué sucede esto

La mayoría de la gente piensa que SQL es difícil porque no saben por dónde empezar. Los tutoriales suelen saltar a cosas complejas como subconsultas o índices, cuando lo único que necesitas al principio es SELECT, FROM y WHERE. El problema real es que la sintaxis es muy sensible: una coma mal puesta o un tipo de dato incorrecto y todo falla. Pero una vez que entiendes el patrón, es como armar un rompecabezas con piezas fijas.

🔧 5 Soluciones

1
Usa SELECT y FROM para obtener datos básicos
🟢 Easy ⏱ 5 minutos

Aprende a seleccionar columnas específicas de una tabla.

  1. 1
    Escribe SELECT seguido de las columnas — Por ejemplo: SELECT nombre, email FROM clientes. Si quieres todas las columnas, usa SELECT *, pero no abuses porque ralentiza la consulta.
  2. 2
    Indica la tabla con FROM — Después de SELECT, escribe FROM nombre_tabla. Asegúrate de que el nombre de la tabla exista en la base de datos. Ejemplo: SELECT * FROM productos.
  3. 3
    Ejecuta la consulta — En herramientas como MySQL Workbench o DBeaver, selecciona el texto de la consulta y haz clic en ejecutar (o presiona Ctrl+Enter). Verás los resultados en una tabla.
💡 Usa siempre mayúsculas para las palabras clave SQL (SELECT, FROM). No es obligatorio, pero es una convención que hace el código más legible.
2
Filtra filas con WHERE y operadores
🟢 Easy ⏱ 10 minutos

Aplica condiciones para obtener solo los datos que necesitas.

  1. 1
    Agrega WHERE después de FROM — Ejemplo: SELECT * FROM pedidos WHERE total > 100. Esto devuelve pedidos con total mayor a 100.
  2. 2
    Usa operadores de comparación — Los más comunes: = (igual), <>, != (diferente), <, >, <=, >=. Para texto, usa comillas simples: WHERE ciudad = 'Madrid'.
  3. 3
    Combina condiciones con AND y OR — Ejemplo: SELECT * FROM empleados WHERE salario > 30000 AND departamento = 'Ventas'. Usa paréntesis para agrupar: WHERE (edad > 30 OR antiguedad > 5) AND activo = 1.
  4. 4
    Usa IN para múltiples valores — En lugar de varios OR, escribe: WHERE ciudad IN ('Madrid', 'Barcelona', 'Valencia'). Es más limpio.
💡 Cuidado con los valores NULL: usa IS NULL o IS NOT NULL, no = NULL. Por ejemplo: WHERE email IS NOT NULL.
3
Ordena resultados con ORDER BY
🟢 Easy ⏱ 5 minutos

Organiza los datos de forma ascendente o descendente.

  1. 1
    Escribe ORDER BY al final de la consulta — Ejemplo: SELECT nombre, precio FROM productos ORDER BY precio. Por defecto ordena ascendente (menor a mayor).
  2. 2
    Especifica el orden con ASC o DESC — Para orden descendente: ORDER BY precio DESC. Para ascendente puedes omitir ASC o escribirlo: ORDER BY precio ASC.
  3. 3
    Ordena por varias columnas — Ejemplo: ORDER BY apellido ASC, nombre ASC. Primero ordena por apellido, y si hay empate, por nombre.
💡 ORDER BY siempre va después de WHERE (si lo hay). Si usas LIMIT, ORDER BY va antes.
4
Une tablas con JOIN para datos relacionados
🟡 Medium ⏱ 15 minutos

Combina datos de dos tablas usando una clave común.

  1. 1
    Identifica la clave común entre tablas — Por ejemplo, tabla 'pedidos' tiene 'cliente_id' y tabla 'clientes' tiene 'id'. Esa es la clave para unirlos.
  2. 2
    Escribe INNER JOIN seguido de la tabla a unir — Ejemplo: SELECT * FROM pedidos INNER JOIN clientes ON pedidos.cliente_id = clientes.id. Esto devuelve solo los pedidos que tienen cliente correspondiente.
  3. 3
    Selecciona columnas específicas con alias — Para evitar ambigüedad, usa alias: SELECT p.id, c.nombre FROM pedidos p INNER JOIN clientes c ON p.cliente_id = c.id. Así sabes de qué tabla viene cada columna.
  4. 4
    Prueba LEFT JOIN para incluir filas sin coincidencia — LEFT JOIN devuelve todas las filas de la tabla izquierda (pedidos) aunque no tengan cliente. Útil para encontrar pedidos huérfanos.
💡 Si tienes dudas sobre qué JOIN usar, piensa en conjuntos: INNER JOIN es la intersección, LEFT JOIN es todo el conjunto izquierdo más la intersección.
5
Agrupa datos con GROUP BY y funciones de agregado
🟡 Medium ⏱ 15 minutos

Resume datos calculando sumas, promedios, etc., por grupos.

  1. 1
    Escribe GROUP BY después de WHERE — Ejemplo: SELECT ciudad, COUNT(*) FROM clientes GROUP BY ciudad. Esto cuenta cuántos clientes hay en cada ciudad.
  2. 2
    Usa funciones de agregado — Las más comunes: COUNT(), SUM(), AVG(), MAX(), MIN(). Ejemplo: SELECT departamento, AVG(salario) FROM empleados GROUP BY departamento.
  3. 3
    Filtra grupos con HAVING — HAVING es como WHERE pero para grupos. Ejemplo: SELECT ciudad, COUNT(*) FROM clientes GROUP BY ciudad HAVING COUNT(*) > 10. Solo muestra ciudades con más de 10 clientes.
  4. 4
    Ordena los resultados agrupados — Puedes combinar GROUP BY con ORDER BY: SELECT ciudad, COUNT(*) as total FROM clientes GROUP BY ciudad ORDER BY total DESC.
💡 No confundas WHERE con HAVING: WHERE filtra filas antes de agrupar, HAVING filtra grupos después. Si puedes usar WHERE, hazlo, es más eficiente.
⚠️ Cuándo buscar ayuda profesional

Si llevas un par de semanas practicando y todavía no entiendes cómo funcionan los JOIN o por qué tu consulta devuelve datos duplicados, busca un curso estructurado o un mentor. También si necesitas optimizar consultas lentas o trabajar con bases de datos muy grandes, un profesional te ahorrará horas de prueba y error.

Aprender SQL no es cuestión de memoria, es cuestión de práctica. Nadie escribe consultas perfectas a la primera. Yo todavía cometo errores de sintaxis después de años usándolo. Lo importante es entender la lógica: SELECT qué, FROM dónde, bajo qué condiciones. Una vez que domines eso, el resto (JOIN, subconsultas, funciones) es solo extender el mismo patrón. Empieza con algo sencillo hoy: abre tu base de datos favorita y escribe SELECT * FROM alguna_tabla. Verás que no es para tanto.

❓ Preguntas Frecuentes

WHERE filtra filas individuales antes de que se agrupen, mientras que HAVING filtra grupos después de la agregación. Por ejemplo, WHERE salario > 3000 filtra empleados, pero HAVING AVG(salario) > 3000 filtra departamentos con salario promedio superior.
Usa plataformas online gratuitas como SQLite Online, DB Fiddle o SQLZoo. También puedes instalar MySQL o PostgreSQL en tu ordenador y cargar bases de datos de ejemplo como la de Northwind o Sakila.
El asterisco significa 'todas las columnas'. Es útil para explorar una tabla rápidamente, pero en producción es mejor especificar las columnas necesarias para evitar sobrecargar la base de datos y la red.
Revisa que los nombres de tablas y columnas estén bien escritos, usa comillas simples para texto y no olvides los puntos y coma al final de cada consulta. Muchos editores SQL tienen resaltado de sintaxis que ayuda a detectar errores.
Un JOIN combina filas de dos o más tablas basándose en una columna relacionada. Se usa cuando necesitas datos que están repartidos en varias tablas, como pedidos con información del cliente. El más común es INNER JOIN, que solo devuelve filas con coincidencias.