提供最新全國三級行政區劃數據(省、市、縣/區),標準化表結構,可直接導入MySQL、PostgreSQL、SQL Server等主流數據庫,支撐地址選擇、物流計費、數據分析等業務場景。
CREATE TABLE `region` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '唯一主鍵ID',
`code` VARCHAR(12) NOT NULL COMMENT '行政區劃代碼(國標6-12位)',
`name` VARCHAR(60) NOT NULL COMMENT '區劃名稱',
`parent_id` INT UNSIGNED DEFAULT NULL COMMENT '父級ID(省->市->縣)',
`first_letter` CHAR(1) DEFAULT NULL COMMENT '拼音首字母(索引優化)',
`level` TINYINT UNSIGNED NOT NULL COMMENT '層級: 0=省, 1=市, 2=縣/區',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_code` (`code`),
KEY `idx_parent` (`parent_id`),
KEY `idx_level` (`level`),
KEY `idx_letter` (`first_letter`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='行政區劃表';
| 字段 | 示例(北京市朝陽區) | 說明 |
|---|---|---|
| id | 1001 | 自增主鍵 |
| code | 110105 | 國標代碼:11(北京) 01(市轄區) 05(朝陽區) |
| name | 朝陽區 | 標準名稱 |
| parent_id | 1000 | 指向北京市(id=1000) |
| first_letter | C | Chaoyang 首字母,支持按字母檢索 |
| level | 2 | 縣級 |
# 解壓下載的SQL文件
gunzip region.sql.gz
# 登錄數據庫導入
mysql -u root -p -D your_database < region.sql
// Python 示例
import pymysql, csv
conn = pymysql.connect(host='localhost', user='root', password='xxx', db='your_db', charset='utf8mb4')
with open('region.csv', 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
sql = "INSERT INTO region (code, name, parent_id, first_letter, level) VALUES (%s, %s, %s, %s, %s)"
with conn.cursor() as cursor:
for row in reader:
cursor.execute(sql, (row['code'], row['name'], row['parent_id'], row['first_letter'], row['level']))
conn.commit()
-- 1. 獲取所有省份
SELECT * FROM region WHERE level = 0 ORDER BY first_letter;
-- 2. 獲取某省下所有城市 (如廣東省 code=44)
SELECT * FROM region WHERE parent_id = (SELECT id FROM region WHERE code = '44' AND level = 0);
-- 3. 獲取某市下所有區縣 (如深圳市 id=123)
SELECT * FROM region WHERE parent_id = 123 AND level = 2;
-- 4. 三級聯動數據構建 (遞歸CTE MySQL 8.0+)
WITH RECURSIVE region_tree AS (
SELECT id, code, name, parent_id, level, 1 AS depth, CAST(name AS CHAR(200)) AS path
FROM region WHERE level = 0
UNION ALL
SELECT r.id, r.code, r.name, r.parent_id, r.level, rt.depth + 1, CONCAT(rt.path, ' > ', r.name)
FROM region r JOIN region_tree rt ON r.parent_id = rt.id
)
SELECT * FROM region_tree ORDER BY path;
百度網盤:https://pan.baidu.com/s/1pK5FqMv (提取碼見分享頁)
文件包含:region.sql(建表+數據)、region.csv(純數據)、README.md。