While an inner join only returns rows with matching values in both tables, an outer join also retrieves rows from one or both tables that do not have a corresponding match in the other, filling missing values with NULL. This makes it ideal for finding unmatched records.