What a Join Actually Returns
A join returns rows built from two tables by matching a column they share. The kind of join decides what happens to rows that find no match: an inner join drops them, a left join keeps everything from the left table and fills the gaps with nulls, and a full outer join keeps both sides.
Learners rarely struggle with the syntax. They struggle because the wrong join silently returns a plausible answer, and a report built on an inner join between customers and orders quietly excludes every customer who has not ordered yet. One thing to keep off screen is database-specific behaviour: optimiser hints, index strategy, and vendor syntax differences belong in the platform documentation rather than in a module teaching the concept.
The lesson is broken into seven scenes: one on why tables are separate at all, two building an inner join from a shared key, two on left joins and what a null means in a result, one on the full outer join and when it is genuinely needed, and one on the three mistakes that produce a wrong answer without an error.

