🐘 PostgreSQL
The engine most teams land on — types that go far beyond the standard, five index kinds and when each earns its keep, extensions, PL/pgSQL and full-text search. Then TimescaleDB and Supabase, which are both Postgres wearing different clothes.
No lessons published yet — this is the roadmap, so you can see exactly what the course will cover before it lands.
Before you start: Learn SQL — Series 1 and Series 2. This track starts where Learn SQL stops. You need to be able to write a join, a GROUP BY and a window function before any of it is useful, because none of that is taught again here — the subject is what Postgres does that other engines do not.
Short on time? The 16 episodes marked core are the shortest path to being productive at work. Start there and pick up the rest whenever a job asks for them.
Series 1 · PostgreSQL Essentials
the client, the types, and what Postgres has that the standard does not
- 01
psql — The Client You Get on a Server With No GUI
coreintermediatecoming soon - 02
Types — numeric, text, and Why timestamptz Is Not timestamp
coreintermediatecoming soon - 03
JSONB — Storing and Querying Documents Inside a Relational Table
coreintermediatecoming soon - 04
Arrays, Ranges and Enums — Column Types Other Engines Do Not Have
intermediatecoming soon - 05
Schemas and search_path — Which Table You Actually Hit
coreintermediatecoming soon - 06
Sequences, IDENTITY and RETURNING — Generated Keys and the Gaps in Them
coreintermediatecoming soon - 07
ON CONFLICT, MERGE and UPDATE ... FROM — Writes the Standard Does Not Give You
coreintermediatecoming soon - 08
Extensions — CREATE EXTENSION and What Ships With Postgres
coreintermediatecoming soon - 09
pg_dump and pg_restore — Taking a Copy You Can Actually Restore
coreintermediatecoming soon - 10
Project — Take a Generic Schema and Make It Properly Postgres
coreintermediate#projectcoming soon
Series 2 · Indexes and the Planner
five index kinds, and why the planner ignored yours
- 01
EXPLAIN (ANALYZE, BUFFERS) — Reading a Postgres Plan Tree
coreadvancedcoming soon - 02
B-tree Indexes — Composite Keys and the Leading Column Rule
coreadvancedcoming soon - 03
GIN and GiST — Indexing JSONB, Arrays, Text Search and Ranges
coreadvancedcoming soon - 04
Partial, Expression and BRIN Indexes — Smaller Indexes That Do More
advancedcoming soon - 05
Statistics — Why the Planner Estimated 3 Rows and Got 300,000
coreadvancedcoming soon - 06
Declarative Partitioning — Splitting a Big Table and Pruning at Query Time
advancedcoming soon - 07
Project — Take a Slow Query and Make It Fast, With Evidence
coreadvanced#projectcoming soon
Series 3 · Beyond Queries
functions, triggers, search and change feeds
- 01
Functions and PL/pgSQL — Logic That Lives in the Database
advancedcoming soon - 02
Triggers — Audit Trails, Derived Columns and What They Cost on a Bulk Load
advancedcoming soon - 03
Full-Text Search — tsvector, Ranking, and Fuzzy Matching With pg_trgm
advancedcoming soon - 04
LISTEN/NOTIFY — Telling an Application Something Changed
advancedcoming soon - 05
Logical Replication — Publications, Slots and the Feed CDC Tools Read
advancedcoming soon - 06
Foreign Data Wrappers — Querying Another Database as a Table
advancedcoming soon - 07
Project — A Searchable Table That Tells You When It Changes
advanced#projectcoming soon
Series 4 · TimescaleDB
the same Postgres, reshaped for time-series
- 01
Hypertables — Automatic Partitioning for Time-Series Tables
advancedcoming soon - 02
time_bucket and Gapfill — The Questions Time-Series Data Is Always Asked
advancedcoming soon - 03
Continuous Aggregates — A Rollup That Maintains Itself
advancedcoming soon - 04
Compression and Retention — Shrinking Old Chunks and Dropping Them Whole
advancedcoming soon - 05
Project — A Metrics Table That Stays Fast for a Year
advanced#projectcoming soon
Series 5 · Supabase
Postgres with an API generated from your schema
- 01
Supabase — Hosted Postgres Where the Schema Generates the API
advancedcoming soon - 02
Row-Level Security — Policies as the Only Thing Between Your Table and the Internet
coreadvancedcoming soon - 03
The Generated API — Tables, Views and Functions as Endpoints
advancedcoming soon - 04
Realtime — Logical Replication Delivered to a Browser, With RLS Still Applied
advancedcoming soon - 05
Storage and Edge Functions — Where Files and Server-Side Work Fit
advancedcoming soon - 06
Project — A Multi-Tenant Schema Nobody Can Read Across
coreadvanced#projectcoming soon
Where this leads
- CockroachDB — starts from Series 1, and Series 2.
- Distributed SQL — starts from Series 1, and Series 2.
Not here, on purpose
- SQL itself — SELECT, JOIN, GROUP BY, CTEs and window functions — covered in Learn SQL. Here you already write them, and the question is what Postgres adds
- Keeping the server up — failover, replication operations, pooling, VACUUM tuning, connection limits — covered in Data Ops, Series 2, which is ten episodes on running PostgreSQL in production. In this course, Series 1 · 37 covers pg_dump and pg_restore because a developer types them weekly; PITR and physical backup are operations and stay there
- Running a migration against a live table without locking it — covered in Data Ops, Series 2 · 35. In this course, Series 1 · 30 is only how an extension or a type change is applied
- Deciding what the tables and keys should be — covered in Data Modeling. Here the schema exists and the question is which Postgres type and index to give it
- Loading data in from other systems — covered in ETL & Data Pipelines. In this course, Series 1 · 05 covers COPY only as the client command you will actually type
- pgvector and embeddings — covered in AI for Data, Series 2, where the embeddings that go in it are also explained