Actually, you have *NOT* describe any "different types of joins."
All those are one and the same type of join: An INNER join. Although the syntax differs, the *SEMANTICS* are identical and will produce (nearly) identical results [I believe that only if you use SELECT * will you see differences in the fields returned when USING or NATURAL are used, and if you had multiple columns in common in the two tables, then NATURAL might change things].
Now... I dunno if you noticed, but the *primary* MySQL documentation doesn't even MENTION either NATURAL or USING. You have to search through bug reports and enhancement lists, etc., to find the details. (That's true of 5.1 docs...I didn't check the version 6 docs.) Both appear to have arisen out of Oracle and have achieved ANSI blessing but not universal acceptance.
And by that I mean (dunno if you care about this) that SQL Server, for a prime example, does not support *either* NATURAL or USING. (Again, that's true of SQL Server 2005, not sure about SQL Server 2008.)
Personally, I would avoid NATURAL and USING, but your mileage may vary.
This does leave us the two primary kinds of INNER JOINs that *are* supported by all major DBs and *are* part of ANSI SQL.
FROM Table_A as a, Table_B as b
WHERE (a.a_id=b.a_id) -- the parentheses are optional
FROM Table_A as a
[INNER] JOIN Table_B as b
ON (a.a_id=b.a_id) -- the parentheses there are optional
Once again, despite the difference in syntax, those two really and truly are 100% equivalent in meaning and will be executed by the query engine identically.
The form using just a comma and the WHERE clause is the older form, predating ANSI SQL by many years. But it was (and is) in such common usage that the ANSI committee left it alone. My personal name for it is an "IMPLICIT inner join" where as the other form, that actually uses the JOIN keyword, is an "EXPLICIT inner join." [EDIT: Ha! Just saw that the Wikipedia article also uses implicit/explicit! Smart article. <grin/>]
Yes, the keyword INNER is properly a part of the name of the JOIN, and *I* always use that keyword, for clarity. But if you omit it, then it is implied, anyway.
So far as I can see, both of the other two forms--NATURAL and USING--are just "syntactic sugar" (look that up in Wikipedia...a "right on" definitions, though the Wikipedia article on SQL notes that they aren't *quite* just sugar). And I see no reason to use them when they aren't supported by all DBs. For the sake of saving the typing of a few characters, you end up with code that won't translate.
I really *THOUGHT* your question (from the title) was going to ask about the *TRUE* different kinds of joins: INNER, LEFT OUTER, RIGHT OUTER, FULL OUTER, and CROSS joins. For those, I commend you to this starting point: