You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Full lesson roadmap for the PostgreSQL course, ordered beginner → expert. Checked items already exist under lessons/.
Notes:
The difficulty enum is beginner | intermediate | advanced, so "expert" tier maps to advanced (or we extend the enum).
Everything runs in a learner's own branch except infra-level ops (replication, physical backup, WAL), intentionally left out as they don't fit the sandbox model.
Modules 7 and 9 (indexes/EXPLAIN/partitioning/locking) need large seeds — good fit for the deploy-time template seeding + "generator → committed .sql" approach.
Full lesson roadmap for the PostgreSQL course, ordered beginner → expert. Checked items already exist under
lessons/.Notes:
difficultyenum isbeginner | intermediate | advanced, so "expert" tier maps toadvanced(or we extend the enum).Module 1 — Query fundamentals · beginner
01-select-basics— projection, filtering, ordering02-where-conditions— comparisons, AND/OR, IS NULL, LIKE, IN, BETWEEN03-sorting-and-pagination— ORDER BY, DISTINCT, LIMIT/OFFSET, keyset pagination04-aggregations— COUNT/SUM/AVG, GROUP BY, HAVINGModule 2 — Changing data · beginner
05-insert-and-update— INSERT, UPDATE, RETURNING06-delete-and-lifecycle— DELETE, TRUNCATE, soft deletes07-upsert— INSERT … ON CONFLICT (DO UPDATE/NOTHING)08-transactions-basics— BEGIN/COMMIT/ROLLBACK, savepointsModule 3 — Combining tables · beginner → intermediate
09-joins— INNER/LEFT, ON vs USING10-advanced-joins— RIGHT/FULL/CROSS, self-joins, multi-table11-set-operations— UNION, INTERSECT, EXCEPT12-subqueries— scalar, IN/EXISTS, correlated, LATERALModule 4 — Schema & modeling · intermediate
13-data-types— numeric, text, boolean, enum, identity/serial14-dates-and-times— timestamptz, intervals, time zones15-constraints— PK, FK, UNIQUE, CHECK, NOT NULL16-ddl-and-schemas— CREATE/ALTER TABLE, schemas, namespaces17-normalization— keys, relationships, normal formsModule 5 — Intermediate querying · intermediate
18-conditional-expressions— CASE, COALESCE, NULLIF19-cte— WITH, readability, chaining20-window-functions— OVER/PARTITION BY, ROW_NUMBER, RANK21-window-functions-advanced— running totals, LAG/LEAD, frames22-recursive-cte— hierarchies, graph walksModule 6 — Postgres power types · intermediate → advanced
23-json-and-jsonb— operators,->/->>/@>, path queries24-arrays— array ops, unnest, ANY/ALL25-full-text-search— tsvector/tsquery, ranking26-ranges-and-generated-columns— range types, exclusion constraints, generated cols27-uuid-and-domains— UUIDs, enums, domainsModule 7 — Performance & indexing · advanced
28-indexes-basics— B-tree, when/why, selectivity29-explain— reading EXPLAIN / EXPLAIN ANALYZE30-index-types— GIN, GiST, BRIN, partial, expression, covering31-query-optimization— statistics, ANALYZE, common anti-patterns32-partitioning— range/list partitioning, pruningModule 8 — Programmability · advanced
33-views— views & materialized views, refresh34-functions— SQL & PL/pgSQL functions35-triggers— BEFORE/AFTER, trigger functions36-procedures— stored procedures, transaction controlModule 9 — Concurrency · advanced → expert
37-mvcc-and-isolation— isolation levels, snapshots38-locking— row/table locks, SELECT FOR UPDATE39-deadlocks— detection, avoidance, advisory locksModule 10 — Expert & operations · expert (= advanced)
40-roles-and-privileges— roles, GRANT, RLS (row-level security)41-vacuum-and-bloat— MVCC cleanup, autovacuum, bloat42-extensions— pg_trgm, citext, intro to PostGIS/others43-capstone-troubleshooting— diagnose & fix a slow real-world query