Fleet training command
Aprende PostgreSQL de verdad.
En tu navegador. Gratis.
Un servidor PostgreSQL 18 real, compilado a WebAssembly, corre dentro de esta pestaña. No se envía nada a ninguna parte, no hay cuenta, y cada lección tiene su propia base de datos desechable — así que puedes romper cosas a propósito. El camino no se detiene en los joins: pasa por window frames, CTEs recursivos, JSONB, upserts, query plans y PL/pgSQL.
Disponible ahora
01
Adquisición de señal
Saca filas de una tabla y dóblalas a tu voluntad.
0/7Lo que vas a aprender
- · Leer cualquier tabla con SELECT, WHERE, ORDER BY y LIMIT
- · Razonar correctamente sobre NULL y la lógica de tres valores
- · Filtrar por patrones de texto, rangos y pertenencia a un conjunto
02
Instrumentos y unidades
Texto, números, fechas y los casts que van de unos a otros.
0/4Lo que vas a aprender
- · Manipular texto con concatenación y las funciones de cadena estándar
- · Truncar fechas e intervals, extraer sus campos y hacer aritmética con ellos
- · Hacer casts de forma deliberada, y ramificar con CASE
03
Estadísticas de la flota
Colapsa muchas filas en un solo número — correctamente.
0/5Lo que vas a aprender
- · Agrupar filas y agregarlas con COUNT, SUM, AVG, MIN, MAX
- · Filtrar grupos con HAVING y entender por qué no es lo mismo que WHERE
- · Pivotar datos con cláusulas FILTER sobre las agregaciones
04
Procedimientos de atraque
Combina tablas sin perder las filas que querías conservar.
0/5Lo que vas a aprender
- · Usar joins INNER, LEFT, RIGHT, FULL y CROSS de forma deliberada
- · Escribir self-joins y anti-joins
- · Evitar la trampa de NOT IN / NULL y la de agregar después de un LEFT JOIN
05
Transmisiones anidadas
Queries dentro de queries, y el álgebra de conjuntos entre ellas.
0/5Lo que vas a aprender
- · Escribir subconsultas escalares, correlacionadas y con EXISTS
- · Combinar conjuntos de resultados con UNION, INTERSECT y EXCEPT
- · Usar DISTINCT ON y LATERAL para problemas por grupo
06
Trazado de rutas
Ponles nombre a tus resultados intermedios — y deja que se llamen a sí mismos.
0/5Lo que vas a aprender
- · Estructurar queries complejas con WITH
- · Recorrer jerarquías y grafos con CTEs recursivos
- · Generar series y controlar la profundidad de la recursión sin riesgo
07
Ventanas de sensor
Agrega sin colapsar filas — el capítulo que los cursos gratuitos se saltan.
0/7Lo que vas a aprender
- · Calcular agregados junto a las filas de detalle con OVER
- · Particionar una window y rankear dentro de ella
- · Alcanzar otras filas con LAG y LEAD
- · Controlar el frame, y saber qué hace realmente el frame por defecto
- · Nombrar una window una vez con WINDOW y reutilizarla en varias cláusulas OVER
- · Elegir entre los modos de frame ROWS, RANGE y GROUPS
08
Diseño del casco
Schemas que hacen imposibles los datos malos.
0/8Lo que vas a aprender
- · Crear tablas con los tipos y las keys adecuados
- · Imponer reglas con NOT NULL, CHECK y foreign keys
- · Elegir las acciones referenciales de forma deliberada
- · Derivar columnas con GENERATED ALWAYS AS
- · Garantizar la unicidad con UNIQUE, sobre una columna o sobre varias, y saber cómo trata los nulls
- · Repartir valores de key con GENERATED AS IDENTITY, y reparar una sequence que se ha quedado atrás
- · Nombrar una regla una sola vez con CREATE DOMAIN y reutilizarla en cada columna que la necesite
- · Modelar un conjunto cerrado y ordenado de etiquetas con CREATE TYPE ... AS ENUM, extenderlo con ALTER TYPE ... ADD VALUE, y reconocer el conjunto que en realidad pertenece a una tabla de lookup
09
Reconocimiento de patrones
Las formas analíticas que reaparecen en todo trabajo real.
0/6Lo que vas a aprender
- · Calcular running totals que se reinician, y expresarlos como una proporción
- · Elegir una ventana móvil por tiempo en lugar de por número de filas
- · Sacar las top N filas de cada grupo en una sola pasada
- · Colapsar rachas consecutivas en islands, y encontrar los gaps entre ellas
- · Reducir una tabla a una fila por clave, y nombrar las filas que borrarías
- · Comparar un periodo con el anterior sin perder los periodos vacíos
10
Manifiestos de carga
Datos semiestructurados, de forma nativa.
0/7Lo que vas a aprender
- · Extraer valores JSONB como jsonb o como text, y saber cuál de los dos tienes
- · Llegar a objetos anidados con los operadores de path
- · Hacer preguntas de containment y de existencia con @> y ?
- · Filtrar dentro del documento con jsonpath
- · Trabajar con columnas array sin fingir que son strings
- · Indexar JSONB y arrays con GIN, y confirmar que el plan lo usa
- · Modelar un intervalo como un range semiabierto que encaja sin huecos, y detectar un choque con &&
- · Convertir el no-solapamiento en una garantía de la base de datos con un exclusion constraint
11
Escribiendo en el registro
Cambiar los datos sin perder ninguno.
0/6Lo que vas a aprender
- · Insertar, actualizar y borrar filas deliberadamente
- · Ver qué hizo una sentencia con RETURNING, en un solo viaje de ida y vuelta
- · Resolver colisiones con ON CONFLICT y excluded
- · Dirigir todo un conjunto de cambios desde un único MERGE
12
Eficiencia del motor
Pregúntale al planner qué va a hacer, y entiende la respuesta.
0/6Lo que vas a aprender
- · Leer un plan de EXPLAIN como un árbol de nodos
- · Distinguir una estimación de una medición con EXPLAIN ANALYZE
- · Reconocer los seq scans, index scans y bitmap heap scans, y saber cuándo toca cada uno
- · Construir indexes btree, partial indexes y expression indexes, y comprobar que el planner los usa de verdad
- · Refrescar las estadísticas con ANALYZE y leer las entradas crudas del planner desde pg_stats
13
Protocolo de esclusa
Las transacciones, y qué te compra de verdad el aislamiento.
0/6Lo que vas a aprender
- · Agrupar sentencias en una unidad de todo-o-nada con BEGIN, COMMIT y ROLLBACK
- · Deshacer parte de una transacción con savepoints, sin perder el resto
- · Nombrar las cuatro anomalías y decir qué isolation level descarta cuál
- · Elegir un isolation level deliberadamente, y escribir el bucle de reintento que SERIALIZABLE exige
- · Leer qué está haciendo un lock de fila, y saber por qué ocurren los deadlocks y cómo evitarlos
14
Automatización de la nave
Lógica que vive dentro de la base de datos.
0/7Lo que vas a aprender
- · Escribir funciones SQL que reciben argumentos y devuelven escalares o tablas enteras
- · Marcar una función IMMUTABLE, STABLE o VOLATILE, y saber qué acabas de prometer
- · Usar variables, IF/ELSIF y bucles de PL/pgSQL para expresar lo que SQL por sí solo no puede
- · Construir un trigger de fila y una tabla de auditoría, y leer NEW y OLD dentro de él
- · Capturar errores con EXCEPTION WHEN, ramificar según el SQLSTATE, y escribir el bucle de reintento que exige un serialization failure
15
Postgres de verdad
Las funcionalidades que son la razón para elegir Postgres.
0/7Lo que vas a aprender
- · Buscar en texto con tsvector, tsquery y el operador @@, y rankear los resultados
- · Respaldar una full-text search con un index GIN sobre la expresión correcta
- · Partir una tabla en range partitions y ver al planner saltarse las que no necesita
- · Filtrar filas por role con row-level security, y demostrarlo con un role que no es superuser
- · Hacer grant y revoke de privileges de tabla y de columna, e inspeccionarlos con has_table_privilege
- · Averiguar qué trae de verdad un build concreto de Postgres
16
Schema vivo
Ponle nombre a una query y cambia una tabla que nadie te va a dejar tumbar.
0/5Lo que vas a aprender
- · Ponerle nombre a una query con CREATE VIEW, y saber cuándo eso gana a repetir un CTE
- · Cerrar con WITH CHECK OPTION el agujero que deja abierto una view escribible
- · Cambiar frescura por velocidad con una materialized view, y hacerle refresh a propósito
- · Añadir una columna a una tabla viva y saber si la tabla se reescribió
- · Ejecutar la migration de columna nullable, backfill y SET NOT NULL, y nombrar el lock de cada paso