Curso interactivo
Curso de SQL
Aprende SQL desde cero, con un Postgres real ejecutándose en tu navegador.
01 · Módulo 1 — SELECT básico
Los fundamentos: leer datos de una tabla y filtrarlos.
- 1.1Introducción a SQLQué es SQL, por qué se usa y cómo es una base de datos.~5 min
- 1.2SELECT … FROMLa consulta más simple: leer filas de una tabla.~10 min
- 1.3Filtrar con WHERESeleccionar solo las filas que cumplen una condición.~10 min
- 1.4Ordenar con ORDER BYOrdenar los resultados, de forma ascendente o descendente.~8 min
02 · Módulo 2 — SELECT avanzado
Limitar, deducir duplicados, renombrar y contar: las herramientas de uso diario.
- 2.1Limitar con LIMITRetornar solo las primeras N filas, por ejemplo para construir tablas de clasificación.~6 min
- 2.2Valores únicos con DISTINCTEliminar duplicados del resultado de un SELECT.~6 min
- 2.3Renombrar con ASDar nombres más legibles a las columnas y expresiones en el resultado.~6 min
- 2.4Contar y resumir: COUNT, AVG, MAXFunciones de agregado: obtener un solo número a partir de muchas filas.~8 min
03 · Módulo 3 — JOIN y GROUP BY
Combinar múltiples tablas y producir informes por grupo: el corazón de cada consulta real.
- 3.1Unir dos tablas: INNER JOINCombinar filas de diferentes tablas siguiendo sus relaciones.~12 min
- 3.2Mantener todo a la izquierda: LEFT JOINIncluir filas que no tienen coincidencia en la otra tabla.~10 min
- 3.3Agrupar con GROUP BYCalcular un agregado por grupo, por ejemplo por departamento.~10 min
- 3.4Filtrar grupos: HAVINGMantener solo los grupos que cumplen una condición sobre el agregado.~8 min
04 · Módulo 4 — SQL práctico
Las herramientas que marcan la diferencia en el trabajo real: listas, rangos, NULL y lógica condicional.
- 4.1Listas y rangos: IN y BETWEENFiltros compactos para "uno de estos" y "entre A y B".~8 min
- 4.2Manejo de NULLs: IS NULL y COALESCEReconocer y tratar valores faltantes sin sorpresas.~10 min
- 4.3Lógica condicional: CASE WHENTransformar valores en categorías directamente en el SELECT.~10 min
- 4.4Una consulta dentro de otra: subconsultasUsar el resultado de un SELECT dentro de otro SELECT.~12 min
05 · Módulo 5 — JOINs avanzados
JOINs de múltiples tablas, auto-uniones, OUTER, CROSS y operaciones de conjuntos: combinar datos como un profesional.
- 5.1JOINs en tres o más tablasRecorrer una cadena de relaciones: pedidos → clientes → productos, en una sola consulta.~12 min
- 5.2Self-JOIN: una tabla con ella mismaJerarquías y relaciones internas: leer una tabla con dos roles (hijo y padre).~10 min
- 5.3OUTER JOIN: encontrar los "huecos"Usar LEFT/RIGHT/FULL OUTER JOIN para encontrar filas sin coincidencia.~10 min
- 5.4UNION, INTERSECT, EXCEPT (y CROSS JOIN)Combinar resultados como conjuntos: unión, intersección, diferencia y producto cartesiano.~12 min
06 · Módulo 6 — Funciones integradas
Transformar y manipular datos con funciones nativas de PostgreSQL: cadenas, fechas, números, conversiones de tipo.
- 6.1Funciones de cadenaLOWER, UPPER, LENGTH, concatenación, SUBSTRING, TRIM, REPLACE, LIKE e ILIKE.~12 min
- 6.2Funciones de fecha y hora (timestamp)EXTRACT, DATE_TRUNC, intervalos y diferencias de fecha.~12 min
- 6.3Funciones numéricasROUND, CEIL, FLOOR, ABS, MOD y división entera vs decimal.~10 min
- 6.4CAST y conversiones de tipoConvertir entre tipos con `::type` y `CAST(... AS ...)`.~10 min
07 · Módulo 7 — Analítica avanzada
Consultas de múltiples pasos (CTE), clasificaciones y totales acumulados (funciones de ventana), jerarquías ilimitadas (WITH RECURSIVE).
- 7.1CTE: consultas de múltiples pasos con WITHDividir una consulta compleja en pasos con nombre para legibilidad y reutilización.~12 min
- 7.2Funciones de ventana: clasificaciones y cálculos por grupoROW_NUMBER, RANK, DENSE_RANK con OVER(PARTITION BY …) para clasificaciones dentro del grupo.~14 min
- 7.3LAG, LEAD y totales acumuladosComparar cada fila con la anterior/siguiente y calcular sumas acumuladas.~12 min
- 7.4CTEs recursivas: jerarquías de profundidad arbitrariaWITH RECURSIVE para recorrer jerarquías como categorías.~14 min
08 · Módulo 8 — Escritura y modificación de datos
INSERT, UPDATE, DELETE, CREATE TABLE con restricciones, transacciones: cerrando el ciclo con escrituras.
- 8.1Insertar datos: INSERTINSERT de una y múltiples filas, cláusula RETURNING, elección explícita de columnas.~10 min
- 8.2Actualizar y eliminar: UPDATE y DELETECambios selectivos con WHERE, y por qué un WHERE olvidado es un desastre.~10 min
- 8.3Crear tablas y restricciones: DDLCREATE TABLE con PRIMARY KEY, NOT NULL, UNIQUE, FOREIGN KEY, CHECK y DEFAULT.~12 min
- 8.4Transacciones: todo o nadaBEGIN, COMMIT, ROLLBACK: hacer atómico un grupo de operaciones.~10 min
09 · Módulo 9 — Estructuras de datos y DDL
Crear y alterar tablas, restricciones avanzadas, tipos complejos y vistas.
- 9.1Tipos de datos avanzados y ENUMsTipos numéricos, TEXT vs VARCHAR, BOOLEAN, UUID y tipos ENUM personalizados.~10 min
- 9.2Restricciones múltiples y a nivel de tablaRestricciones UNIQUE y PRIMARY KEY compuestas, CHECK avanzado y claves foráneas (ON DELETE CASCADE).~12 min
- 9.3Cambiar la estructura: ALTER TABLEAñadir, modificar y eliminar columnas o restricciones de tablas existentes.~10 min
- 9.4Vistas y abstracción de datosCrear VIEWs para simplificar consultas complejas y MATERIALIZED VIEWs para rendimiento.~12 min
10 · Optimización e índices
El arte de hacer las consultas rápidas: índices, planes de ejecución y optimización de bases de datos.
- 10.1Índices y B-TreesCrear índices para acelerar drásticamente las consultas de búsqueda en tablas grandes.~15 min
- 10.2EXPLAIN y ANALYZEAprende a leer los planes de ejecución de la base de datos para diagnosticar cuellos de botella.~15 min
- 10.3Índices compuestos y parcialesUsar índices en múltiples columnas a la vez o solo en una porción específica de los datos.~12 min
- 10.4El problema N+1El infame problema de rendimiento ORM y los métodos SQL nativos para superarlo en una sola consulta.~12 min
11 · Transacciones y concurrencia
Gestionar de forma segura las modificaciones de datos concurrentes: transacciones ACID, bloqueos y niveles de aislamiento.
- 11.1Transacciones ACID (BEGIN/COMMIT)Mantener los datos consistentes con BEGIN, COMMIT y ROLLBACK, agrupando consultas en un solo bloque invisible para los demás.~15 min
- 11.2Condiciones de carreraEscenarios límite: qué sucede cuando dos empleados paralelos de la base de datos actúan sobre el mismo carrito de usuario.~10 min
- 11.3Bloqueo y SELECT FOR UPDATEBloquear activamente filas durante las lecturas, obligando a otros hilos mutadores a esperar su turno.~15 min
- 11.4Niveles de aislamientoLlevar al límite implementando Serializable, o bajar a Read Committed para un rendimiento no seguro pero rápido.~12 min
12 · Funciones y disparadores (triggers)
Automatizar la lógica de negocio dentro de la base de datos: escribir funciones reutilizables y reaccionar a eventos con triggers.
- 12.1UDFs y SQL baseCrea tus propias Funciones Definidas por el Usuario para encapsular cálculos complejos y reutilizarlas como macros en cada consulta.~15 min
- 12.2Lógica avanzada con PL/pgSQLDale superpoderes a tus funciones: variables, ramas if-else y bucles en estilo procedimental puro dentro de la base de datos.~15 min
- 12.3Introducción a los disparadores (triggers)Definir funciones especiales que pueden inspeccionar instantáneamente el registro SALIENTE (OLD) o ENTRANTE (NEW).~15 min
- 12.4Triggers prácticos y auditoríaAutomatizar la seguridad: actualizar automáticamente la fecha "updated_at" y archivar mágicamente las filas eliminadas para cumplimiento.~12 min
13 · Funciones de ventana
Análisis de datos avanzado sin colapsar filas: descubre OVER(), PARTITION BY y funciones analíticas.
- 13.1Introducción y la cláusula OVEREjecutar cálculos agregados (como SUM o AVG) conservando las filas individuales originales.~15 min
- 13.2Agrupar con PARTITION BYCrear agrupaciones lógicas (ventanas) dentro de los datos sobre las que aplicar funciones, sin usar GROUP BY.~15 min
- 13.3Clasificaciones: ROW_NUMBER, RANK y DENSE_RANKAsignar números de fila secuenciales y rangos a los resultados, manejando correctamente los empates.~15 min
- 13.4Desplazamientos: LAG y LEADAcceder a valores de la fila anterior o siguiente directamente desde la fila actual para calcular deltas y variaciones.~12 min
14 · CTEs y consultas jerárquicas (WITH)
Simplificar consultas enormes con Expresiones de Tabla Comunes y navegar por árboles de datos ilimitados con CTEs recursivas.
- 14.1Introducción a las CTEs (WITH)Reemplazar subconsultas anidadas ilegibles con un formato procedimental limpio declarando "tablas virtuales" temporales.~12 min
- 14.2CTEs múltiples y encadenadasDominar la complejidad dividiendo el procesamiento en múltiples pasos secuenciales dentro de una sola sentencia WITH.~15 min
- 14.3CTEs recursivas: datos en forma de árbolNavegar sin límites por las jerarquías de gerentes y categorías padre-hijo llamando a la CTE desde sí misma.~18 min
15 · PostgreSQL JSON y NoSQL
Aprovechar el poder relacional mezclado con el soporte flexible de documentos a través de JSON y JSONB sin usar bases de datos externas.
- 15.1Integración de JSON y JSONBAlmacenar documentos complejos dentro de una columna y consultar sus campos con operadores de flecha.~15 min
- 15.2Funciones de agregación JSONGenerar archivos JSON o matrices de objetos sobre la marcha de forma nativa en SQL usando json_build_object() y json_agg().~15 min