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. 1
  2. 2

    SQL

    Query and organize relational data.

  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8