Inner joins - Return a row only when the columns in the join contain values that satisfy the join condition.
This means that if a row has a null value in one of the columns in the join condition, that row isn't returned.
Outer joins - Can return a row even when one of the columns in the join condition contains a null value.
Self joins - Return rows joined on the same table.