Learning path
Database systems
Model data with tables and constraints, query it with SQL, normalize designs, keep updates safe with transactions, and speed up queries with indexes.
About this subject
A database system stores data so that many programs can query and change it reliably. The relational model, with its tables, keys, and constraints, remains the foundation of most business software, and SQL is the language used to query it.
This path covers the relational model, SELECT with grouping, joins, normalization, transactions and the ACID properties, and indexes with query plans. The Python programs use SQLite through the built-in sqlite3 module, the SQL lessons run on SQLite directly, and the other languages implement the same ideas, such as hash joins and ordered indexes, in memory. No database server is needed. Each lesson uses a small, complete program that runs on its own. Python has the full sequence. The other languages listed below add lessons that use that language's own idioms and standard library, such as Java threads, C++ smart pointers, C# LINQ, or Node.js streams, and appear only for the topics the language supports. The programs are simplified models chosen to make an idea visible, so they are a foundation for further study rather than a replacement for a full course or for production-grade software.
Before you start: Basic programming in your chosen language. No prior SQL knowledge is assumed.
- 1
Python
Readable code for automation, data, and first programs.
The relational model and constraints
Define tables with keys and constraints so the database rejects invalid data.
Querying with SELECT, GROUP BY, and HAVING
Filter rows, group them, filter the groups, and sort the results.
Joins: combining tables
Match rows across tables with INNER and LEFT joins and keep rows that have no match.
Normalization and update anomalies
Split a redundant table so each fact is stored once and updates cannot contradict themselves.
Transactions and ACID
Group updates so they all happen or none do, and roll back when a rule fails.
Indexes and query plans
See how an index changes a table scan into a search by reading the query plan.
- 2
SQL
Query and organize relational data.
SQL: constraints keep the data valid
Use PRIMARY KEY, NOT NULL, UNIQUE, CHECK, and REFERENCES so the database itself rejects bad rows.
SQL: transactions with COMMIT and ROLLBACK
Move money between two accounts so that both updates happen or neither does.
SQL: normalization removes repeated facts
Split a table that repeats a customer's city on every row into two tables and see why one update is enough.
SQL: subqueries and common table expressions
Compare each row with a group average, and name an intermediate result with WITH.
SQL: window functions for running totals and ranks
Compute a running total and a rank within each group without collapsing the rows.
SQL: views and triggers
Name a reusable query as a view and record price changes automatically with a trigger.
SQL: a unique index and the system catalog
Enforce uniqueness with an index and look up the index in the database's own catalog.
- 3
C
Learn memory, pointers, and efficient systems programming.
- 4
- 5
Java
Understand object oriented programs and the JVM.
- 6
- 7
- 8
TypeScript
JavaScript with static types for dependable code.