- An inner join is one where the matching row in the joined table is required for a row from the first table to be returned
- An outer join is one where the matching row in the joined table is not required for a row from the first table to be returned
- A natural join is a join (you can have either
natural left
or natural right
) that assumes the join criteria to be where same-named columns in both table match
I would avoid using natural joins like the plague, because natural joins are:
not standard sql [SQL 92] and therefore not portable, not particularly readable (by most SQL coders) and possibly not supported by various tools/libraries
- not informative; you can't tell what columns are being joined on without referring to the schema
- your join conditions are invisibly vulnerable to schema changes - if there are multiple natural join columns and one such column is removed from a table, the query will still execute, but probably not correctly and this change in behaviour will be silent
- hardly worth the effort; you're only saving about 10 seconds of typing