In a nutshell
A join builds one combined table from two by pairing rows on a shared column, the join key. An inner join keeps only rows that have a match on both sides. Outer joins — left, right, full — also keep the unmatched rows from one or both tables, filling the empty columns with NULL. A cross join pairs every row with every row.