The second form is called an implicit join. First and foremost, implicit joins are considered deprecated by most rdbmss. Personally, I sincerely doubt that any major RDBMS will drop support for them any time in the near future, but why take the risk?
Second, explicit joins have a standard way to perform outer joins. Implicit joins have all sorts of unreadable hacks solutions (like, e.g., Oracle's (+)
syntax), but, as far as I know, nothing standard that has a reasonable expectancy of portability.
And third, and I admit this is purely a matter of taste, they just look better. Using explicit joins allows you to logically separate the conditions in the query to the "scaffolding" needed to join all the tables together and the actual logical conditions of the where
clause. With implicit joins, everything just gets lumped into the where
clause and with as little as three or four tables it becomes pretty hard to manage.