Base de Datos SQL de Códigos Postales de España

Descarga el script completo en lenguaje SQL con la estructura DDL optimizada e indexada y los 14.662 registros oficiales en sentencias INSERT por lotes masivos. Listo para importar en MySQL, MariaDB o PostgreSQL.

✓ Formato .SQL Estándar ✓ CHARSET utf8mb4 ✓ 14.662 Registros Completos ✓ Índices para Alto Rendimiento ✓ ~1.2 MB de Descarga

Estructura de la Tabla y Definición DDL

La tabla codigos_postales_espana está diseñada siguiendo las mejores prácticas de bases de datos relacionales: tipo CHAR(5) para preservar los ceros a la izquierda (ej. 08001 o 01001) e índices compuestos para soportar miles de consultas por segundo:

schema.sql — CREATE TABLE e Índices
DROP TABLE IF EXISTS `codigos_postales_espana`;
CREATE TABLE `codigos_postales_espana` (
  `codigo_postal` CHAR(5) NOT NULL COMMENT 'Código postal oficial de Correos (5 dígitos)',
  `municipio` VARCHAR(120) NOT NULL COMMENT 'Nombre oficial de la localidad o municipio',
  `provincia` VARCHAR(80) NOT NULL COMMENT 'Nombre oficial de la provincia',
  `codigo_provincia` CHAR(2) NOT NULL COMMENT 'Prefijo numérico de 2 dígitos INE (01 a 52)',
  `codigo_ine` VARCHAR(11) DEFAULT NULL COMMENT 'Código municipal oficial del INE',
  `latitud` DECIMAL(11,7) DEFAULT NULL COMMENT 'Coordenada latitud GPS (WGS84)',
  `longitud` DECIMAL(11,7) DEFAULT NULL COMMENT 'Coordenada longitud GPS (WGS84)',
  KEY `idx_codigo_postal` (`codigo_postal`),
  KEY `idx_provincia` (`codigo_provincia`),
  KEY `idx_municipio` (`municipio`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Dataset completo de códigos postales de España';
Columna Tipo de Dato Clave / Índice Comentario
codigo_postal CHAR(5) KEY idx_codigo_postal Almacena 5 caracteres exactos, garantizando que códigos con ceros iniciales (como 08001 o 03001) no se conviertan en números truncados.
municipio VARCHAR(120) KEY idx_municipio Nombre oficial del municipio o población.
provincia VARCHAR(80) — Nombre de la provincia de pertenencia.
codigo_provincia CHAR(2) KEY idx_provincia Prefijo numérico de 2 caracteres (01 a 52), óptimo para filtrado rápido por provincia.
codigo_ine VARCHAR(11) — Identificador INE oficial del municipio.
latitud / longitud DECIMAL(11,7) — Coordenadas geodésicas en el sistema WGS84 con precisión métrica.

Guía Rápida de Importación

Puedes importar el fichero codigos-postales-espana.sql utilizando cualquiera de tus herramientas habituales:

1

Vía Terminal / CLI (Recomendado)

La forma más rápida y directa. Abre la consola de tu servidor y ejecuta:

mysql -u usuario -p base_de_datos < codigos-postales-espana.sql
2

Vía phpMyAdmin

Selecciona tu base de datos en el menú izquierdo, haz clic en la pestaña superior "Importar", elige el archivo .sql y pulsa "Continuar".

3

DBeaver / DataGrip / Workbench

Abre el archivo SQL en el editor de scripts de tu gestor gráfico, selecciona la conexión activa y pulsa "Execute SQL Script" (Alt+X o Ctrl+Shift+Enter).

Consultas SQL Útiles de Ejemplo

Ejemplos listos para ejecutar sobre tu nueva tabla:

consultas_utiles.sql
-- 1. Buscar todos los datos de un código postal específico
SELECT * FROM `codigos_postales_espana` WHERE `codigo_postal` = '28850';

-- 2. Listar todos los códigos postales de la provincia de Madrid (código 28)
SELECT `codigo_postal`, `municipio` 
FROM `codigos_postales_espana` 
WHERE `codigo_provincia` = '28' 
ORDER BY `municipio` ASC;

-- 3. Búsqueda por coincidencia en el nombre del municipio
SELECT * FROM `codigos_postales_espana` 
WHERE `municipio` LIKE '%Alcalá%' 
LIMIT 20;

-- 4. Contar cuántos códigos postales tiene cada provincia
SELECT `codigo_provincia`, `provincia`, COUNT(*) AS total_cp
FROM `codigos_postales_espana`
GROUP BY `codigo_provincia`, `provincia`
ORDER BY total_cp DESC;