It does indeed make a difference. There are many ways to think about it conceptually.
In a way,a join means you want to utilize one row instead of two rows, if possible. You are basically taking two tables, and making one single table out of them.
The best way I think to understand between inner, right/left, and outer is tables
**FULL Outer:**
name number
john
jamie 7
ann 10
11
12
Some of the rows are missing elements, because an outer join uses every single possible row of every table. In this case, whatever we chose to be our linker (ie what comes after the "ON"), John has a linker-value that does not correspond to any row in our second table. And 11 and 12 are numbers in the second table that don't have linker-values that match up with a name in the other name
Inner means that if one of the elements of either of your tables does not have a data member in common with the other table, then we must skip over those elements. So the table becomes
**INNER**
name number
jamie 7
ann 10
Left/right joins are the same thing if you consider them from an abstract point of view, because each of these joins will cause one of the tables to have its full set of elements displayed, while the other is limited to only those which have a partner in the other table. Left/right are outer joins, but basically only half-outer.
**left/right:**
name number
lee
john
jamie 7
ann 10
name number
jamie 7
ann 10
15
29
In Explanation of self-joins
take the inner join example he gave. But what if there are some Bosses who list an employee who cannot be found in the employee table, or even list a null value? And what if there is an employee who who in the employee table, lists a boss, but the boss is not present in the boss table. Or maybe the employee lists no boss at all? (That one would actually be realistic, since some people are self-employed)
Then we must decide, what exactly are we trying to query for? Do we need to account for self-employed employees? If so, INNER JOIN is ruled out. So now we must decide if we wish to include bosses who do not have employees among our pool in the database.
Thinking realistically, I can imagine we would do a left or right join.