For some of them that were not explained in the mail to Matthew:
Simple Join - implicit join, defaults to internal join
a join b on a.id = b.id
Natural Join is an inner join in all columns with the same name.
a natural join b
Self Join is a join of a table to itself, it can be any other type of join (internal self-join, external self-join, etc.)
a "a1" join a "a2" on "a1".id = "a2".id
A Cartesian join is every possible combination of rows; you will always get a product from the number of rows from both tables. You do this with an inner join without specifying a join condition
a join b
Cross join is a synonym for cartesian union
Internal join with USING Clause is an alternative syntax for join conditions, you can use it if both tables have corresponding column names
a join b using (id)
Inner Join with ON Clause - This is the same as I showed for a simple join, the only syntax is to join the where clause (as shown below)
a join b where a.id = b.id
Left Outer Join - Same as Left Outer Join - same as right join. This looks like a left join, but you get zeros on the first table, not the second.
source share