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.
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:
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:
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
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".
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:
-- 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;