You're absolutely correct, a not exists construct will also produce the same (correct) result for the question 'which rows in A doesn't exist in B'.
There are truly many ways to skin a cat with SQL, but since this isn't an outer join, it sort of falls outside the discussion.
/Kenneth