Casi todo el software que usas a diario guarda información en algún sitio: tu banco guarda movimientos, una tienda online guarda pedidos, una aplicación de mensajería guarda conversaciones. Ese "algún sitio" es, en la inmensa mayoría de los casos, una base de datos relacional, y el lenguaje con el que se habla con ella se llama SQL. Esta primera lección no te enseñará todavía a escribir consultas complejas: te dará el mapa mental que necesitas para que todo lo que venga después encaje. Entenderás qué problema resuelve SQL, en qué se diferencia de los lenguajes de programación que quizá ya conoces, cómo se organiza internamente el lenguaje y por qué, cincuenta años después de su invención, sigue siendo una de las habilidades técnicas más valoradas del mercado.

Contenido

  1. Qué es SQL y qué problema resuelve
  2. SQL no es lo mismo que un SGBD
  3. Breve historia: del artículo de Codd al estándar ANSI/ISO
  4. El estándar frente a los dialectos
  5. SQL es declarativo, no imperativo
  6. Los cinco sublenguajes: DDL, DML, DQL, DCL y TCL
  7. Dónde se usa SQL hoy y por qué sigue siendo imprescindible
  8. El caso del curso: TiendaVerde
  9. Errores Comunes y Consejos
  10. Ejercicios
  11. Conclusión

  1. Qué es SQL y qué problema resuelve

SQL son las siglas de Structured Query Language (lenguaje de consulta estructurado). Es un lenguaje especializado en una única cosa: describir qué datos quieres de una base de datos relacional, y qué quieres hacer con ellos.

Para entender el problema que resuelve, imagina que gestionas los pedidos de una tienda en una carpeta de archivos de texto. Cada vez que quieras responder a una pregunta tan simple como "¿cuánto facturamos en Francia el mes pasado?" tendrías que:

  • Abrir cada fichero y leerlo entero.
  • Escribir código que separe los campos de cada línea.
  • Filtrar manualmente por país y por fecha.
  • Sumar los importes cuidando los decimales.
  • Repetir todo el proceso desde cero para la siguiente pregunta.

Y eso sin contar problemas peores: ¿qué pasa si dos personas escriben en el mismo fichero a la vez? ¿Cómo garantizas que un pedido no quede a medio guardar si se va la luz? ¿Cómo evitas que alguien registre un pedido de un cliente que no existe?

Una base de datos relacional resuelve todo eso, y SQL es la interfaz que te da acceso a esa maquinaria. Con SQL, la pregunta anterior es una sola frase que el sistema traduce por ti en un plan de lectura eficiente:

SELECT SUM(gastos_envio) FROM pedidos WHERE fecha_pedido >= '2026-01-01';

No te preocupes por la sintaxis todavía: fíjate solo en que estás describiendo el resultado que quieres, no los pasos para obtenerlo.

En resumen, SQL te permite:

Necesidad Qué te da SQL
Guardar datos de forma estructurada Tablas con columnas de tipo definido
Recuperar exactamente lo que necesitas Consultas con filtros, ordenación y límites
Combinar información de varios sitios Operaciones de reunión entre tablas (JOIN)
Resumir y analizar Agregaciones (contar, sumar, promediar)
Garantizar que los datos sean correctos Restricciones e integridad referencial
Que varias personas trabajen a la vez sin corromper nada Transacciones y control de concurrencia

  1. SQL no es lo mismo que un SGBD

Es la confusión número uno de quien empieza. Conviene fijarla desde el principio:

  • SQL es el lenguaje. Es una especificación escrita, como lo son HTML o el español.
  • Un SGBD (Sistema Gestor de Bases de Datos, en inglés DBMS) es el programa que entiende ese lenguaje, guarda los datos en disco, los indexa, gestiona la concurrencia y te devuelve resultados.

La analogía útil: SQL es al SGBD lo que el idioma español es a las personas que lo hablan. Todas hablan español, pero cada una con su acento y sus expresiones locales.

Estos son los SGBD relacionales más habituales:

SGBD Licencia Perfil típico de uso Notas para este curso
PostgreSQL Open source Aplicaciones web, analítica, geodatos Es el dialecto de referencia del curso
MySQL / MariaDB Open source Web clásica, WordPress, hosting compartido Señalaremos sus diferencias cuando importen
SQLite Dominio público Móviles, escritorio, ficheros locales, tests Alternativa mínima si no puedes instalar nada
SQL Server Comercial (Microsoft) Entornos corporativos con stack .NET Su dialecto se llama T-SQL
Oracle Database Comercial Banca, grandes ERP, sistemas críticos Su dialecto se llama PL/SQL

Decisión del curso: todos los ejemplos están escritos y probados para PostgreSQL 16. Cuando MySQL o SQLite se comporten de forma distinta en algo relevante, encontrarás una nota o una tabla comparativa. Nunca mezclaremos dialectos sin avisarte.

  1. Breve historia: del artículo de Codd al estándar ANSI/ISO

Conocer la historia ayuda a entender por qué el lenguaje es como es (incluidas sus rarezas).

Año Hito
1970 Edgar F. Codd, de IBM, publica A Relational Model of Data for Large Shared Data Banks. Propone organizar los datos en relaciones (tablas) con una base matemática sólida.
1974 Donald Chamberlin y Raymond Boyce, también en IBM, crean SEQUEL (Structured English Query Language) para el prototipo System R.
1977 El nombre se acorta a SQL por un conflicto de marca registrada. Por eso mucha gente sigue pronunciándolo "sicuel".
1979 Relational Software (hoy Oracle) lanza el primer SGBD SQL comercial, adelantándose a IBM.
1986 ANSI publica el primer estándar SQL (SQL-86). Un año después lo adopta ISO.
1992 SQL-92, la versión que fijó el núcleo del lenguaje que aún usamos.
1999-2016 Sucesivas revisiones añaden disparadores, recursión (WITH RECURSIVE), funciones de ventana (SQL:2003), XML y JSON (SQL:2016).
2023 SQL:2023 incorpora, entre otras cosas, tipos de grafo de propiedades.

La lección importante: SQL no es un lenguaje congelado en los años 70. Muchas de las herramientas más potentes que verás en el módulo 10 (funciones de ventana, CTE, JSON) son incorporaciones modernas y están en el corazón del análisis de datos actual.

  1. El estándar frente a los dialectos

El estándar ANSI/ISO define un lenguaje común, pero ningún SGBD lo implementa al 100 %, y todos añaden extensiones propias. A eso se le llama dialecto.

Un ejemplo concreto: pedir "solo las 5 primeras filas".

SGBD Sintaxis
Estándar SQL:2008 FETCH FIRST 5 ROWS ONLY
PostgreSQL LIMIT 5 (y también acepta FETCH FIRST)
MySQL / SQLite LIMIT 5
SQL Server SELECT TOP 5 ...
Oracle (clásico) WHERE ROWNUM <= 5

Otro ejemplo: concatenar dos textos.

SGBD Sintaxis
Estándar / PostgreSQL / Oracle 'Tienda' || 'Verde'
MySQL CONCAT('Tienda', 'Verde')
SQL Server 'Tienda' + 'Verde'

Consecuencia práctica: el 80 % de lo que aprendas aquí funcionará tal cual en cualquier SGBD. El 20 % restante requerirá pequeños ajustes. Aprender un dialecto bien (PostgreSQL) y saber que existen diferencias es mucho más útil que intentar aprender un "SQL genérico" que en realidad no habla nadie.

  1. SQL es declarativo, no imperativo

Esta es la idea que más cuesta a quien viene de Python, Java o JavaScript, y la que más rendimiento te dará entender pronto.

  • En un lenguaje imperativo describes el procedimiento: abre esto, recorre aquello, acumula, comprueba, cierra.
  • En un lenguaje declarativo describes el resultado deseado, y el sistema decide cómo obtenerlo.

Compara mentalmente las dos formas de responder a "dame los clientes de Valencia".

Enfoque imperativo (pseudocódigo tipo Python):

resultado = []
for cliente in leer_fichero("clientes.csv"):
    if cliente["ciudad"] == "Valencia":
        resultado.append(cliente)
resultado.sort(key=lambda c: c["apellidos"])

Enfoque declarativo (SQL):

SELECT * FROM clientes WHERE ciudad = 'Valencia' ORDER BY apellidos;

En la versión SQL no aparece ningún bucle, ningún índice de posición, ninguna variable acumuladora. Tú declaras el qué; el optimizador de consultas del SGBD decide el cómo: si leer la tabla entera, si usar un índice, en qué orden combinar tablas, si paralelizar el trabajo entre varios procesadores.

Aspecto Lenguaje imperativo SQL (declarativo)
Qué escribes Los pasos El resultado
Quién decide la estrategia El optimizador del SGBD
Control del flujo Explícito (bucles, condicionales) No existe en una consulta
Cómo se mejora el rendimiento Reescribiendo el algoritmo Con índices, estadísticas y reescritura de la consulta
Unidad de trabajo El elemento individual El conjunto de filas

La consecuencia mental más importante: en SQL se piensa en conjuntos, no en filas una a una. Si te sorprendes pensando "y ahora recorro cada pedido y...", casi siempre existe una forma en conjunto de expresarlo, más corta y muchísimo más rápida.

Ojo: que el optimizador decida no significa que puedas escribir cualquier cosa. Dos consultas que devuelven el mismo resultado pueden tardar 3 milisegundos o 3 minutos. El módulo 8 está dedicado precisamente a eso.

  1. Los cinco sublenguajes: DDL, DML, DQL, DCL y TCL

SQL es lo bastante grande como para que convenga dividirlo en familias de sentencias. No es una división formal del estándar, pero es la clasificación que usa todo el mundo y te ayudará a situar cada módulo del curso.

Sublenguaje Nombre completo Para qué sirve Sentencias típicas Dónde se ve en el curso
DDL Data Definition Language Definir y modificar la estructura (tablas, columnas, índices) CREATE, ALTER, DROP, TRUNCATE Módulos 5, 8 y 10
DML Data Manipulation Language Modificar los datos que hay dentro INSERT, UPDATE, DELETE, MERGE Módulo 5
DQL Data Query Language Consultar datos sin modificarlos SELECT Módulos 2, 3, 4, 6, 7
DCL Data Control Language Gestionar permisos y roles GRANT, REVOKE Módulo 11
TCL Transaction Control Language Delimitar transacciones BEGIN, COMMIT, ROLLBACK, SAVEPOINT Módulo 9

Un ejemplo de una línea de cada uno, ya sobre las tablas de TiendaVerde que verás en la lección 01-06:

-- DDL: crear una estructura
CREATE TABLE categorias (id INTEGER PRIMARY KEY, nombre VARCHAR(60), descripcion TEXT);

-- DML: insertar un dato
INSERT INTO categorias (id, nombre) VALUES (1, 'Alimentación');

-- DQL: consultar
SELECT nombre FROM categorias;

-- DCL: dar permiso de lectura a un rol
GRANT SELECT ON categorias TO analista;

-- TCL: confirmar los cambios de una transacción
COMMIT;

Nota importante sobre SELECT: mucha gente clasifica SELECT dentro de DML, porque el estándar no reconoce "DQL" como categoría separada. Ambas versiones son aceptables; lo relevante es que distingas leer de escribir, porque los permisos, el rendimiento y los riesgos son muy distintos en cada caso.

  1. Dónde se usa SQL hoy y por qué sigue siendo imprescindible

graph LR
    A[Base de datos<br/>relacional] --> B[Backend de<br/>aplicaciones]
    A --> C[Analítica de<br/>producto y negocio]
    A --> D[Business<br/>Intelligence]
    A --> E[Data<br/>Engineering]
    B --> B1[API REST, e-commerce,<br/>ERP, banca]
    C --> C1[Métricas, cohortes,<br/>experimentos A/B]
    D --> D1[Cuadros de mando:<br/>Power BI, Tableau, Looker]
    E --> E1[ETL/ELT, dbt,<br/>almacenes de datos]
  • Backend de aplicaciones. Toda aplicación con usuarios, pedidos o contenido necesita persistencia. Aunque uses un ORM (Hibernate, Django ORM, Prisma, SQLAlchemy), el ORM genera SQL: si no sabes leerlo, no sabrás por qué tu página tarda ocho segundos en cargar.
  • Analítica de datos. Es la herramienta diaria del analista: segmentar clientes, medir retención, calcular ingresos por canal.
  • Business Intelligence. Power BI, Tableau, Metabase, Looker y Superset se apoyan en SQL, y todos permiten (o exigen) escribir consultas a mano para lo no trivial.
  • Data engineering. Los almacenes de datos modernos (BigQuery, Snowflake, Redshift, Databricks SQL) se consultan con SQL, y herramientas como dbt consisten literalmente en organizar transformaciones escritas en SQL.
  • Ciencia de datos e IA. El paso previo a cualquier modelo es obtener y limpiar el conjunto de datos, y ese paso casi siempre empieza con una consulta SQL.

¿Por qué no lo ha sustituido nada? Se anunció su muerte con el movimiento NoSQL de 2010, y ocurrió lo contrario: los sistemas NoSQL acabaron añadiendo capas de consulta parecidas a SQL. Las razones de su permanencia:

  1. Está basado en matemáticas, no en modas: el álgebra relacional sigue siendo válida.
  2. Es portable como habilidad: cambias de empresa, de SGBD o de década, y tu conocimiento se transfiere.
  3. Separa el qué del cómo: los motores mejoran su rendimiento sin obligarte a reescribir tus consultas.
  4. Es el lenguaje común entre desarrollo, analítica y negocio.

  1. El caso del curso: TiendaVerde

A partir de aquí y hasta el proyecto final, todos los ejemplos y ejercicios del curso usarán la misma base de datos: la de TiendaVerde, una tienda online ficticia de productos ecológicos.

  • Sede: Valencia (España).
  • Catálogo: alimentación ecológica, cosmética natural, hogar sostenible, bebidas, higiene personal y complementos.
  • Mercados: España, Portugal y Francia.
  • Operativa: vende por web (pedidos sin comercial asignado) y por teléfono (pedidos gestionados por un comercial del equipo). Trabaja con proveedores de varios países, gestiona stock, acepta reseñas de clientes y tramita devoluciones.

Su base de datos tiene nueve tablas: categorias, proveedores, productos, clientes, empleados, pedidos, lineas_pedido, resenas y devoluciones. La verás en detalle, con su diagrama y su script de carga, en la lección 01-06.

Trabajar siempre sobre el mismo caso tiene una ventaja enorme para el autoaprendizaje: no gastarás energía en entender un contexto nuevo en cada lección, y podrás comparar cómo la misma pregunta se responde con herramientas cada vez mejores.

Estas son algunas de las preguntas de negocio que hoy no sabes responder y que al terminar el curso resolverás con soltura:

Pregunta de negocio Herramienta que necesitarás Módulo
¿Qué productos cuestan menos de 10 € y están activos? SELECT + WHERE 2
¿Qué clientes no han hecho nunca un pedido? LEFT JOIN + IS NULL 3 y 4
¿Cuál es el ticket medio por país? GROUP BY + AVG 4
¿Qué categorías facturan más de 500 €? GROUP BY + HAVING 4
¿Quién es el jefe de cada empleado? SELF JOIN 3
¿Qué productos tienen mejor nota media y al menos 3 reseñas? Agregación + HAVING 4
¿Qué clientes gastan más que la media? Subconsulta 7
¿Por qué esta consulta tarda 4 segundos? Índices + EXPLAIN 8
¿Cómo registro un pedido sin arriesgarme a dejarlo a medias? Transacciones 9
¿Cuál es el ranking mensual de ventas por categoría? Funciones de ventana 10

Errores Comunes y Consejos

  • Confundir SQL con "la base de datos". Frases como "usamos SQL" son ambiguas. Lo correcto es "usamos PostgreSQL" (el SGBD) "y lo consultamos con SQL" (el lenguaje).
  • Creer que existe un único SQL. Copiar una consulta de Stack Overflow escrita para MySQL y esperar que funcione en PostgreSQL es una fuente constante de frustración. Comprueba siempre para qué motor está escrito lo que copias.
  • Pensar fila a fila. El error mental más caro. Si tu primer instinto es "recorro cada pedido", detente: en SQL se opera sobre conjuntos completos.
  • Asumir que SQL es "cosa de bases de datos antiguas". Es exactamente al revés: el auge de la analítica y del data engineering ha multiplicado su demanda en la última década.
  • Consejo: aprende un dialecto a fondo. Dominar PostgreSQL y conocer las diferencias principales vale más que un conocimiento superficial de cinco motores.
  • Consejo: escribe siempre las consultas a mano al principio. Los asistentes y los generadores automáticos son útiles después; al principio impiden que interiorices el modelo mental.

Ejercicios

Estos ejercicios son conceptuales: aún no necesitas tener nada instalado.

Ejercicio 1

Clasifica cada una de estas frases indicando a qué sublenguaje pertenece (DDL, DML, DQL, DCL o TCL) y justifica brevemente por qué:

  1. Añadir una columna telefono a la tabla clientes.
  2. Registrar un nuevo pedido del cliente 7.
  3. Averiguar cuántos productos hay en la categoría "Bebidas".
  4. Deshacer todos los cambios hechos desde el inicio de la operación en curso.
  5. Permitir que el usuario analista pueda leer la tabla pedidos pero no modificarla.
  6. Eliminar por completo la tabla devoluciones, estructura incluida.

Ejercicio 2

Un compañero te dice: "He escrito la consulta con SELECT TOP 10 * FROM productos y PostgreSQL me da un error de sintaxis. Está claro que PostgreSQL no cumple el estándar SQL."

Explica en tres o cuatro frases por qué su razonamiento es incorrecto y cómo debería plantear el problema.

Ejercicio 3

Traduce a lenguaje natural, en una sola frase, lo que declara esta consulta. No intentes describir los pasos que da el motor, sino el resultado que se pide:

SELECT nombre, precio
FROM productos
WHERE activo = TRUE AND precio < 10
ORDER BY precio DESC;

Soluciones

Solución 1

Frase Sublenguaje Por qué
1. Añadir columna telefono DDL Cambia la estructura de la tabla, no sus datos (ALTER TABLE)
2. Registrar un pedido DML Inserta datos nuevos (INSERT)
3. Contar productos de "Bebidas" DQL Solo lee información (SELECT); no modifica nada
4. Deshacer los cambios en curso TCL Controla la transacción (ROLLBACK)
5. Dar permiso de lectura DCL Gestiona privilegios (GRANT SELECT)
6. Eliminar la tabla entera DDL Elimina un objeto de la estructura (DROP TABLE)

Fíjate en el matiz del punto 6: borrar las filas de devoluciones sería DML (DELETE), pero borrar la tabla es DDL (DROP). El mismo verbo en castellano, dos familias distintas.

Solución 2

El razonamiento falla en dos puntos. Primero, SELECT TOP 10 no forma parte del estándar ANSI/ISO: es una extensión propia de SQL Server, así que PostgreSQL no está incumpliendo nada al rechazarla. Segundo, el estándar limita filas con FETCH FIRST 10 ROWS ONLY, y PostgreSQL sí lo admite, además de su forma habitual LIMIT 10. Lo correcto sería preguntarse "¿cuál es la sintaxis de este dialecto para limitar filas?" en lugar de asumir que la sintaxis que uno conoce es el estándar. En la práctica, ningún SGBD implementa el estándar completo y todos añaden extensiones.

Solución 3

"Dame el nombre y el precio de los productos que están activos y cuestan menos de 10 euros, empezando por el más caro."

Observa lo que no aparece en esa frase: ningún bucle, ningún recorrido, ninguna decisión sobre índices. Eso es exactamente lo que significa que SQL sea declarativo. La consulta no dice cómo encontrar esas filas —eso lo decidirá el optimizador—, solo cuáles quieres y en qué orden las esperas.

Conclusión

En esta lección has construido el marco conceptual del curso:

  • SQL es un lenguaje declarativo y estandarizado para definir, manipular, consultar y controlar datos en bases relacionales; describe qué quieres, no cómo obtenerlo.
  • SQL (lenguaje) y SGBD (programa) son cosas distintas: PostgreSQL, MySQL, SQLite, SQL Server y Oracle hablan SQL, cada uno con su dialecto.
  • El estándar ANSI/ISO define un núcleo común desde 1986, pero ningún motor lo implementa por completo: por eso el curso fija PostgreSQL 16 como referencia.
  • El lenguaje se organiza en cinco familias —DDL, DML, DQL, DCL y TCL— que se corresponden con los módulos que recorrerás.
  • SQL es hoy imprescindible en backend, analítica, BI y data engineering, y no ha sido sustituido por nada.
  • TiendaVerde será tu campo de pruebas de principio a fin.

En la siguiente lección, Configurando tu entorno SQL, pasarás de la teoría a la práctica: instalarás PostgreSQL (con instrucciones para Linux, macOS y Windows, además de la opción recomendada con Docker), aprenderás a conectarte con el cliente psql, conocerás los clientes gráficos más habituales y crearás la base de datos tiendaverde que usarás durante todo el curso.

Curso de SQL

Módulo 1: Introducción a SQL

Módulo 2: Consultas básicas de SQL

Módulo 3: Trabajando con múltiples tablas

Módulo 4: Filtrado avanzado de datos

Módulo 5: Manipulación de datos

Módulo 6: Funciones avanzadas de SQL

Módulo 7: Subconsultas y consultas anidadas

Módulo 8: Índices y optimización de rendimiento

Módulo 9: Transacciones y concurrencia

Módulo 10: Temas avanzados

Módulo 11: SQL en la práctica

Módulo 12: Proyecto final

© Copyright 2026. Todos los derechos reservados