By default, Magento contains States list only for USA and there is no provision in the Magento admin to add or modify list of states for a country. So if you want to add states for any other country to display e.g. in shopping cart or checkout page, you can execute the following sql queries through phpMyAdmin or MySQL console as outlined in the two steps below:

STEP 1. Run the following query in your phpMyAdmin to make the changes in directory_country_region table :-

To insert list of Indian States:

INSERT INTO `directory_country_region` VALUES
(NULL , “IN”, “Andaman and Nicobar”,”Andaman and Nicobar”),
(NULL , “IN”, “Andhra Pradesh”,”Andhra Pradesh”),
(NULL , “IN”, “Arunachal Pradesh”,”Arunachal Pradesh”),
(NULL , “IN”, “Assam”,”Assam”),
(NULL , “IN”, “Bihar”,”Bihar”),
(NULL , “IN”, “Chandigarh”,”Chandigarh”),
(NULL , “IN”, “Chhattisgarh”,”Chhattisgarh”),
(NULL , “IN”, “Dadra and Nagar Haveli”,”Dadra and Nagar Haveli”),
(NULL , “IN”, “Daman and Diu”,”Daman and Diu”),
(NULL , “IN”, “Delhi”,”Delhi”),
(NULL , “IN”, “Goa”,”Goa”),
(NULL , “IN”, “Gujarat”,”Gujarat”),
(NULL , “IN”, “Haryana”,”Haryana”),
(NULL , “IN”, “Himachal Pradesh”,”Himachal Pradesh”),
(NULL , “IN”, “Jammu and Kashmir”,”Jammu and Kashmir”),
(NULL , “IN”, “Jharkhand”,”Jharkhand”),
(NULL , “IN”, “Karnataka”,”Karnataka”),
(NULL , “IN”, “Kerala”,”Kerala”),
(NULL , “IN”, “Lakshadweep”,”Lakshadweep”),
(NULL , “IN”, “Madhya Pradesh”,”Madhya Pradesh”),
(NULL , “IN”, “Maharashtra”,”Maharashtra”),
(NULL , “IN”, “Manipur”,”Manipur”),
(NULL , “IN”, “Meghalaya”,”Meghalaya”),
(NULL , “IN”, “Mizoram”,”Mizoram”),
(NULL , “IN”, “Nagaland”,”Nagaland”),
(NULL , “IN”, “Orissa”,”Orissa”),
(NULL , “IN”, “Pondicherry”,”Pondicherry”),
(NULL , “IN”, “Punjab”,”Punjab”),
(NULL , “IN”, “Rajasthan”,”Rajasthan”),
(NULL , “IN”, “Sikkim”,”Sikkim”),
(NULL , “IN”, “Tamil Nadu”,”Tamil Nadu”),
(NULL , “IN”, “Tripura”,”Tripura”),
(NULL , “IN”, “Uttar Pradesh”,”Uttar Pradesh”),
(NULL , “IN”, “Uttaranchal”,”Uttaranchal”),
(NULL , “IN”, “West Bengal”,”West Bengal”);

To insert list of Australian States:

INSERT
INTO `your-database-name`.`directory_country_region`
(`region_id`, `country_id`, `code`, `default_name`)
VALUES
(NULL, ‘AU’, ‘ACT’, ‘Australian Captial Territory’),
(NULL, ‘AU’, ‘NSW’, ‘New South Wales’),
(NULL, ‘AU’, ‘NT’, ‘Northern Territory’),
(NULL, ‘AU’, ‘QLD’, ‘Queensland’),
(NULL, ‘AU’, ‘SA’, ‘South Australia’),
(NULL, ‘AU’, ‘TAS’, ‘Tasmania’),
(NULL, ‘AU’, ‘VIC’, ‘Victoria’),
(NULL, ‘AU’, ‘WA’, ‘Western Australia’);

Here:
1. region_id: auto-incremented id
2. country_id: the iso code of country (refer directory_country table)
3. code: unique code (user defined) to be used for a state
4. default_name: name of the state (termed as ‘regions’ in Magento)

STEP 2. Run the following query in your phpMyAdmin to make the changes in directory_country_region_name table:-

To insert list of Indian States:

INSERT
INTO `your-database-name`.`directory_country_region_name`
(`locale`, `region_id`, `name`)
VALUES
(‘en_AU’, ‘485’, ‘Andaman and Nicobar’),
(‘en_AU’, ‘486’, ‘Andhra Pradesh’),
(‘en_AU’, ‘487’, ‘Arunachal Pradesh’),
(‘en_AU’, ‘488’, ‘Assam’),
(‘en_AU’, ‘489’, ‘Bihar’),
(‘en_AU’, ‘490’, ‘Chandigarh’),
(‘en_AU’, ‘491’, ‘Chhattisgarh’),
(‘en_AU’, ‘492’, ‘Dadra and Nagar Haveli’),
(‘en_AU’, ‘493’, ‘Daman and Diu’),
(‘en_AU’, ‘494’, ‘Delhi’),
(‘en_AU’, ‘495’, ‘Goa’),
(‘en_AU’, ‘496’, ‘Gujarat’),
(‘en_AU’, ‘497’, ‘Haryana’),
(‘en_AU’, ‘498’, ‘Himachal Pradesh’),
(‘en_AU’, ‘499’, ‘Jammu and Kashmir’),
(‘en_AU’, ‘500’, ‘Jharkhand’),
(‘en_AU’, ‘501’, ‘Karnataka’),
(‘en_AU’, ‘502’, ‘Kerala’),
(‘en_AU’, ‘503’, ‘Lakshadweep’),
(‘en_AU’, ‘504’, ‘Madhya Pradesh’),
(‘en_AU’, ‘505’, ‘Maharashtra’),
(‘en_AU’, ‘506’, ‘Manipur’),
(‘en_AU’, ‘507’, ‘Meghalaya’),
(‘en_AU’, ‘508’, ‘Mizoram’),
(‘en_AU’, ‘509’, ‘Nagaland’),
(‘en_AU’, ‘510’, ‘Orissa’),
(‘en_AU’, ‘511’, ‘Pondicherry’),
(‘en_AU’, ‘512’, ‘Punjab’),
(‘en_AU’, ‘513’, ‘Rajasthan’),
(‘en_AU’, ‘514’, ‘Sikkim’),
(‘en_AU’, ‘515’, ‘Tamil Nadu’),
(‘en_AU’, ‘516’, ‘Tripura’),
(‘en_AU’, ‘517’, ‘Uttar Pradesh’),
(‘en_AU’, ‘518’, ‘Uttaranchal’),
(‘en_AU’, ‘519’, ‘West Bengal’);

To insert list of Australian States:

INSERT
INTO `your-database-name`.`directory_country_region_name`
(`locale`, `region_id`, `name`)
VALUES
(‘en_AU’, ‘485’, ‘Australian Capital Territory’),
(‘en_AU’, ‘486’, ‘New South Wales’),
(‘en_AU’, ‘487’, ‘Northern Territory’),
(‘en_AU’, ‘488’, ‘Queensland’),
(‘en_AU’, ‘489’, ‘South Australia’),
(‘en_AU’, ‘490’, ‘Tasmania’),
(‘en_AU’, ‘491’, ‘Victoria’),
(‘en_AU’, ‘492’, ‘Western Australia’);

Here:

1. locale: website locale or language of the website
2. region_id: it’s a foreign key referring `directory_country_region` table
3. name: name of the state for a specific language or locale

IMPORTANT : ‘region_id’ is the foreign key in directory_country_region_name table referencing ‘region_id’ primary key in directory_country_region table in the database. So the region_id values in 2nd step, example ‘485’, ‘486’, ‘487’ etc. should be same as the values generated for region_id column in directory_country_region table after executing the sql query in step 1.

e.g. if after Step 1, the column value of region_id in directory_country_region table for Australian Capital Territory is “500”, then in step 2, the line “(‘en_AU’, ‘485’, ‘ Australian Capital Territory ‘),” should be replaced with “(‘en_AU’, ‘500’, ‘ Australian Capital Territory ‘),” and so on.

Alternatively for Step 2, you can also use the below SQL query as shortcut instead of manually finding the region ids from `directory_country_region` table:

INSERT INTO `directory_country_region_name` (`locale`, `region_id`, `name` )
SELECT ‘en_US’, tmp.region_id, tmp.default_name FROM `directory_country_region`
AS tmp WHERE tmp.country_id=’IN’;