Saltar al contenido principal
Pgnaut

cuenta

Inicia sesión o crea una cuenta

Te llega un enlace de acceso por email. Sin contraseña que recordar.

ENES

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. Tus queries no salen de ahí, no hace falta 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.

empezar entrenamiento →0 / 105 objetivos cumplidos

Disponible ahora

 

  1. 01

    Adquisición de señal

    Saca filas de una tabla y moldéalas a tu antojo.

    0/8

    SELECT · WHERE · ORDER BY · NULL · LIKE · DISTINCT

    Lo 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 rangos y pertenencia a un conjunto
    • · Buscar texto con LIKE e ILIKE, y saber cuándo un patrón deja de ser barato
  2. 02

    Instrumentos y unidades

    Texto, números, fechas y los casts que van de unos a otros.

    0/4

    text functions · dates · intervals · CAST · CASE

    Lo 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
  3. 03

    Estadísticas de la flota

    Colapsa muchas filas en un solo número. Correctamente.

    0/5

    GROUP BY · HAVING · FILTER · ROLLUP · GROUPING SETS

    Lo 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
    • · Producir subtotales y totales generales con ROLLUP, CUBE y GROUPING SETS
  4. 04

    Procedimientos de atraque

    Combina tablas sin perder las filas que querías conservar.

    0/5

    INNER JOIN · LEFT JOIN · self-join · anti-join · NOT IN

    Lo 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
  5. 05

    Transmisiones anidadas

    Queries dentro de queries, y el álgebra de conjuntos entre ellas.

    0/6

    EXISTS · correlated · UNION · EXCEPT · DISTINCT ON · LATERAL

    Lo que vas a aprender

    • · Escribir subqueries escalares, correlacionadas y con EXISTS
    • · Combinar conjuntos de resultados con UNION, INTERSECT y EXCEPT
    • · Usar DISTINCT ON y LATERAL para problemas por grupo
  6. 06

    Trazado de rutas

    Ponles nombre a tus resultados intermedios. Luego deja que se llamen a sí mismos.

    0/5

    WITH · recursive CTE · generate_series

    Lo 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
  7. 07

    Ventanas de sensor

    Agrega sin colapsar filas: el capítulo que los cursos gratuitos se saltan.

    0/8

    OVER · PARTITION BY · LAG · LEAD · ROWS · RANGE · GROUPS

    Lo 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, reutilizarla, y construir una window sobre otra
    • · Elegir entre los modos de frame ROWS, RANGE y GROUPS
  8. 08

    Diseño del casco

    Schemas que hacen imposibles los datos malos.

    0/9

    CREATE TABLE · CHECK · foreign keys · GENERATED · UNIQUE · IDENTITY

    Lo 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
    • · Agrupar varios campos en un solo valor con CREATE TYPE ... AS (...), leerlos de vuelta con (col).field, y saber cuándo dos columnas normales son la mejor respuesta
  9. 09

    Reconocimiento de patrones

    Las formas analíticas que reaparecen en todo trabajo real.

    0/6

    running totals · top N per group · gaps and islands · dedupe · period over period

    Lo 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. 10

    Manifiestos de carga

    Datos semiestructurados, de forma nativa.

    0/7

    JSONB · ->> · @> · jsonpath · arrays · GIN

    Lo 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, para que una query de containment pueda usar el index
    • · 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 una exclusion constraint
  11. 11

    Escribiendo en el registro

    Cambiar los datos sin perder ninguno.

    0/6

    INSERT · UPDATE · DELETE · RETURNING · ON CONFLICT · MERGE

    Lo 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. 12

    Eficiencia del motor

    Pregúntale al planner qué va a hacer, y entiende la respuesta.

    0/6

    EXPLAIN · EXPLAIN ANALYZE · scans · indexes · pg_stats

    Lo 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. 13

    Protocolo de esclusa

    Las transacciones, y qué te compra de verdad el aislamiento.

    0/6

    BEGIN · COMMIT · SAVEPOINT · isolation levels · locks · deadlocks

    Lo 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. 14

    Automatización de la nave

    Lógica que vive dentro de la base de datos.

    0/8

    functions · PL/pgSQL · triggers · EXCEPTION · SQLSTATE

    Lo 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 y ramificar según el SQLSTATE en vez de según el texto del mensaje
    • · Lanzar tu propio SQLSTATE, y escribir el bucle de reintento que exige un serialization failure
  15. 15

    Postgres de verdad

    Las funcionalidades que son la razón para elegir Postgres.

    0/7

    full-text search · partitions · row-level security · GRANT

    Lo 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. 16

    Schema vivo

    Ponle nombre a una query y cambia una tabla que nadie te va a dejar tumbar.

    0/5

    VIEW · CHECK OPTION · materialized views · ALTER TABLE · migrations

    Lo 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 migración de columna nullable, backfill y SET NOT NULL, y nombrar el lock de cada paso
  17. 17

    Soporte vital

    Los sistemas que siguen funcionando cuando nadie mira.

    0/4

    MVCC · xmin · bloat · VACUUM · WAL

    Lo que vas a aprender

    • · Leer xmin, xmax y ctid, y decir qué versión de una fila estás mirando
    • · Explicar por qué un UPDATE escribe una versión nueva de la fila y deja la vieja atrás
    • · Medir el bloat con pg_relation_size, y distinguir el espacio muerto de las filas vivas
    • · Decir qué reclama VACUUM, qué no devuelve nunca, y qué cuesta VACUUM FULL
    • · Describir cómo el write-ahead log hace durable un COMMIT, y ver moverse la posición del log