I am looking for a list of towns, cities by country (the countries I mean here are all countries that exist on planet Earth). Is there any open-source SQL database available online which I can download and use, or any geography social network sites APIs I can use?
Or is it something I have to make it up myself? - I hope not!
There is a sample database for PostgreSQL with that information. I don't know how outdated it is, though...
It's hosted in http://pgfoundry.org/projects/dbsamples/.
This gives you the SQL to insert a list of countries into a table - 239 of them:
http://www.sqldumpster.com/databases/geographic/
Look for "Countries (and ISO codes)"
Didn't find anything obvious for the cities and towns. Maybe you can use the countries list an make a crawler to find them.
Try this:
http://www.world-gazetteer.com/wg.php?x=1129163518&men=stdl&lng=en&gln=xx&dat=32&srt=npan&col=aohdq