The databases are offered in two formats - Excel and SQL. Excel version allows making easy changes to the database. SQL saves you time if you need the database in this format. You may also purchase the bundle of the two formats.
The database consists of four tables (excel sheets): continents, countries, regions (states), cities.
There are 212 countries in my database. I am aware that there are more countries on earth, but my purpose was not to create the most complete database out there, it was to create a database that can be used for a meaningful purpose.
This table also contains international dialing codes for every country.
The Regions table only contains information about the U.S. states, Canadian provinces and U.K. countries. This is a conscious decision. If you are like me, you need this database to feed to a selector script that will allow visitors to choose the location. In my experience, in most cases the subdivisions in most countries create more confusion and waste of time than clarity.
The structure of the database allows you to add more regions and subdivisions. All you have to do is list those subdivisions in the Regions table and then allocate the cities from the Cities table to each region.
The Cities table contains information about: 43,299 cities in the United States, 1,743 cities in Canada and a total of 76,856 cities across the world (including the U.S. and Canada). Here are the detailed stats. There are no duplicates in the database.
Because the cities are in Unicode UTF8 format and since many of them use accents, all of the tables (excel sheets) also contain a short descriptor column (shortCountry, shortRegion and shortCity) with a one-word ANSI representation of the country, region or city. I use it to generate location-based URLs.