Sure. In a normal "inner" join, we need a row from both the left and right hand tables to match to get output. So, assuming a simple pair of tables, a and b:
table a:
id | info
0 | Sxooter
1 | Stan
2 | Margaret
table b:
id | number
0 | 123456
2 | 99999
4 | 88
We could join these two tables on the id field:
select * from a join b on (a.id=b.id)
In this join (an inner join) we would get:
id | info | number
0 | Sxooter | 123456
2 | Margaret | 99999
Note that we don't get the row 1 from table a, or row 4 from table b, because they don't match up.
Now, we can use a left or right outer join to get the rows that don't necessarily match up to show up anyway.
select * from a left join b on (a.id=b.id)
id | info | number
0 | Sxooter | 123456
1 | Stan |
2 | Margaret | 99999
Notice that Stan shows up, but the number we get for him is NULL. We could use a right join:
select * from a left join b on (a.id=b.id)
id | info | number
0 | Sxooter | 123456
2 | Margaret | 99999
4 | | 88
And finally a full outer join would give us:
id | info | number
0 | Sxooter | 123456
1 | Stan |
2 | Margaret | 99999
4 | | 88
OK, so that's overkill. Anyway, since the rows that don't match return null, we can find the ones in the left table that don't have a match by asking for all the rows where the right hand table returns NULL...