Saltar al contenido principal

Tipos de Datos en SQL (MySQL)

Este documento detalla los principales tipos de datos en SQL, organizados por categoría, con ejemplos y recomendaciones de uso según eficiencia de almacenamiento y propósito.


1. Tipos Numéricos

TipoBytesDescripciónRecomendaciones de uso
TINYINT1Entero muy pequeño (-128 a 127)Flags booleanos, estados simples
SMALLINT2Entero pequeñoCódigos pequeños, contadores de bajo rango
MEDIUMINT3Entero medioIDs intermedios, balances pequeños
INT o INTEGER4Entero estándarClaves primarias, contadores generales
BIGINT8Entero grandeTotales acumulados, transacciones, timestamps
DECIMAL(M,D)VariableNúmero decimal fijoDatos financieros donde se requiere precisión exacta
FLOAT4Coma flotante simple precisiónMétricas aproximadas, cálculos rápidos
DOUBLE8Coma flotante doble precisiónCálculos científicos, estadísticas complejas
BIT(n)NBitfield de longitud nAlmacenamiento compacto de flags binarios

2. Tipos de Cadena (String)

TipoBytes (aprox.)DescripciónRecomendaciones de uso
CHAR(n)nCadena de longitud fijaCódigos uniformes, claves fijas
VARCHAR(n)n + 1Cadena de longitud variableNombres, direcciones, campos editables
TEXTVariableTexto largo hasta 65,535 caracteresDescripciones, contenido libre
TINYTEXT≤ 255Texto pequeñoComentarios breves, etiquetas
MEDIUMTEXT≤ 16 MBTexto medioArtículos, entradas de blog
LONGTEXT≤ 4 GBTexto muy extensoDocumentos extensos, logs detallados
ENUMVariableLista definida de valoresEstados limitados, categorías cerradas
SETVariableConjunto múltiple de valoresSelecciones múltiples entre valores conocidos
BINARY(n)nDatos binarios fijosHashes, claves codificadas
VARBINARY(n)n + 1Datos binarios variablesArchivos, imágenes pequeñas

3. Tipos de Fecha y Hora

TipoBytesDescripciónRecomendaciones de uso
DATE3Fecha (YYYY-MM-DD)Fecha de nacimiento, eventos
DATETIME8Fecha y hora completasTimestamps humanos, registros de eventos
TIMESTAMP4Fecha/hora en formato UNIX (auto-ajuste TZ)Registros de auditoría, sincronización externa
TIME3Hora del díaHorarios, duración específica
YEAR1Año (YYYY)Registro anual, períodos fiscales

4. Tipos Especiales

TipoBytesDescripciónRecomendaciones de uso
JSONVariableObjeto JSON estructuradoDatos semiestructurados, configuración dinámica
GEOMETRYVariableCoordenadas espacialesSistemas GIS, mapas
POINT, LINESTRING, POLYGONVariableVariantes geométricasGeolocalización, trazados espaciales
BOOL / BOOLEAN1 (alias de TINYINT)Lógico verdadero/falsoFlags, estados binarios

5. Recomendaciones Generales

  • Eficiencia: Usa TINYINT, SMALLINT o ENUM cuando el conjunto de datos es limitado.
  • Precisión financiera: Prefiere DECIMAL sobre FLOAT/DOUBLE para evitar errores de redondeo.
  • Texto largo: TEXT y sus variantes no son indexables directamente, considera VARCHAR si necesitas búsquedas.
  • Timestamps: Usa TIMESTAMP si necesitas compatibilidad con zonas horarias; DATETIME si quieres evitar el ajuste.
  • Identificadores: Para claves primarias usa INT UNSIGNED AUTO_INCREMENT a menos que la cardinalidad lo exija (BIGINT).
  • Flexibilidad: JSON es útil en modelos dinámicos pero más costoso en operaciones; evita abusar en bases normalizadas.