Outer joins keep unmatched rows
A LEFT JOIN returns every row from the left table, with NULLs filled in for columns from the right table when there is no match. Use it when you want to preserve all rows from one side regardless of whether the join finds a partner.
SQLite supports LEFT JOIN, RIGHT JOIN, and FULL OUTER JOIN. The latter two were added in 3.39 (2022) — older code (and old answers on Stack Overflow) often emulates them with two LEFT JOINs UNIONed together.
Tip:
LEFT JOIN ... WHERE rhs.col IS NULL is the canonical 'rows in A with no match in B' pattern. It reads more naturally than the equivalent NOT EXISTS form to many people.