🙏 Realmente necesitamos su apoyo. Necesitamos financiamiento para continuar nuestra misión: publicar nuevas lecciones y mejorar la plataforma. Si puede, por favor apoye el proyecto con una donación. Ayude al proyecto ahora →
Código SQL copiado al portapapeles

Lesión 1.4 · Tiempo de lectura: ~8 min

Los tipos de datos definen qué tipo de valores puede almacenar cada columna en una base de datos relacional. En esta lección, aprenderás los tipos de datos SQL más comunes, cuándo usar cada uno de ellos y cómo las elecciones correctas de tipo mejoran la calidad de los datos, la eficiencia del almacenamiento y el rendimiento de las consultas.

Tipos de Datos SQL Explicados: INTEGER, VARCHAR, DATE y Más

En la lección anterior, cubrimos tablas, claves, restricciones y ACID. Ahora pasamos a una decisión de diseño práctica que debes tomar para cada tabla: elegir el tipo de dato correcto para cada columna.

Comparación de tipos de datos numéricos, de texto y de fecha/hora en el diseño de columnas de tabla

Antes de profundizar en los subtipos, aquí están los principales grupos de tipos de datos SQL:

  • Tipos numéricos: TINYINT, INT, BIGINT, DECIMAL, FLOAT
  • Tipos de cadena: CHAR, VARCHAR, TEXT
  • Tipos de fecha/hora: DATE, TIME, DATETIME, TIMESTAMP
  • Tipos especializados: BOOLEAN, BLOB, JSON

¿Qué Son los Tipos de Datos Numéricos en SQL?

Los tipos de datos numéricos almacenan números, pero no todos los números deben almacenarse de la misma manera. En la práctica, eliges entre:

  • tipos enteros para números enteros,
  • tipos decimales exactos para valores financieros,
  • tipos de punto flotante para valores científicos aproximados.

Familia INTEGER

Los tipos enteros almacenan números enteros sin decimales.

TipoTamaño típicoRango firmado aproximado
TINYINT1 byte-128 a 127
SMALLINT2 bytes-32,768 a 32,767
INTEGER / INT4 bytes-2,147,483,648 a 2,147,483,647
BIGINT8 bytes-9,223,372,036,854,775,808 a 9,223,372,036,854,775,807

Los rangos exactos pueden variar ligeramente según la base de datos y el soporte para firmado/no firmado.

DECIMAL / NUMERIC

DECIMAL almacena valores exactos con precisión fija.

  • DECIMAL(p, s) significa:
    • p = número total de dígitos,
    • s = dígitos después del punto decimal.
  • Ejemplo: DECIMAL(10, 2) soporta valores hasta 99,999,999.99.
  • Mejor para precios, facturas, impuestos y cualquier valor donde la precisión sea obligatoria.

FLOAT / REAL / DOUBLE

Los tipos de punto flotante almacenan valores aproximados.

  • Buenos para cálculos científicos y datos de telemetría.
  • No son ideales para moneda porque el punto flotante binario puede introducir pequeñas diferencias de redondeo.
  • DOUBLE generalmente ofrece mayor precisión que FLOAT.

¿Qué Son los Tipos de Datos de Cadena en SQL?

Los tipos de texto difieren principalmente por el comportamiento de longitud y la estrategia de almacenamiento.

CHAR

  • Texto de longitud fija.
  • CHAR(10) siempre reserva espacio para 10 caracteres.
  • Si el valor es más corto, muchas bases de datos lo rellenan con espacios.
  • Útil para datos de tamaño fijo como códigos de país ISO.

VARCHAR

  • Texto de longitud variable con un límite superior.
  • VARCHAR(255) almacena hasta 255 caracteres pero utiliza solo el espacio necesario.
  • Buena opción predeterminada para nombres, correos electrónicos, títulos y etiquetas.

TEXT

  • Texto grande de longitud variable.
  • Útil para descripciones largas, cuerpos de artículos, comentarios o registros.
  • El comportamiento y los límites de indexación pueden diferir según el sistema de base de datos.

¿Qué Son los Tipos de Datos de Fecha y Hora?

Los tipos temporales deben usarse para cualquier valor que represente una fecha, una hora o una marca de tiempo de evento.

DATE

Almacena solo año-mes-día.

TIME

Almacena solo hora-minuto-segundo.

DATETIME / TIMESTAMP

Almacena tanto la fecha como la hora.

TIMESTAMP puede tener un comportamiento consciente de la zona horaria en algunos sistemas, mientras que DATETIME es a menudo neutral en cuanto a la zona horaria. Siempre verifica el comportamiento de tu DBMS antes de diseñar tablas de auditoría o de eventos.

¿Qué Otros Tipos de Datos Deberías Conocer?

Muchas bases de datos relacionales también admiten tipos especializados útiles:

  • BOOLEAN: almacena valores verdadero/falso.
  • BLOB: almacena contenido binario como imágenes o archivos.
  • JSON: almacena documentos JSON semiestructurados y a menudo admite funciones/indexes JSON.

¿Cómo Elegir el Tipo de Dato Correcto?

Utiliza esta lista de verificación práctica:

  • Elige el tipo más pequeño que cubra de manera segura los valores esperados.
  • Usa DECIMAL para dinero; evita FLOAT para montos financieros.
  • Prefiere VARCHAR sobre CHAR a menos que la longitud de los datos sea realmente fija.
  • Almacena fechas y horas con tipos temporales, no con cadenas.
  • Verifica el comportamiento específico de la base de datos para valores predeterminados, manejo de zonas horarias e indexación.

Elegir tipos de datos cuidadosamente en el momento del diseño reduce el trabajo futuro de migración de datos, errores en la aplicación y regresiones de rendimiento.


Conclusiones clave de esta lección:

  • Los tipos de datos definen qué valores puede almacenar una columna y afectan fuertemente la calidad de los datos.
  • Los tipos numéricos sirven a diferentes objetivos: números enteros, decimales exactos y valores de punto flotante aproximados.
  • CHAR, VARCHAR y TEXT deben elegirse según la longitud esperada del texto y el comportamiento de almacenamiento.
  • Los campos de fecha/hora deben usar DATE, TIME o TIMESTAMP en lugar de texto plano.
  • Elegir el tipo correcto desde el principio ayuda a evitar errores, limpieza de datos y problemas de rendimiento más adelante.

Preguntas Frecuentes

¿Cuál es la diferencia entre DECIMAL y FLOAT?

DECIMAL almacena valores exactos y es mejor para dinero. FLOAT almacena valores aproximados y puede introducir diferencias de redondeo, por lo que es mejor para cálculos de estilo científico.

¿Debería usar CHAR o VARCHAR para nombres y correos electrónicos?

En la mayoría de los casos, usa VARCHAR porque los nombres y correos electrónicos tienen longitud variable. CHAR es mejor para valores de longitud fija como códigos de país.

¿Es NULL un tipo de dato?

No. NULL significa un valor faltante o desconocido. No es un tipo de dato separado, sino un marcador especial que puede aparecer en columnas, dependiendo de las restricciones.

Preguntas de Entrevista

¿Cómo eliges entre INTEGER, BIGINT y SMALLINT?

Estima el rango de valores esperados y elige el tipo más pequeño que se ajuste de manera segura. Esto mejora la eficiencia del almacenamiento y previene el desbordamiento.

¿Por qué se prefiere DECIMAL para valores de moneda?

Porque DECIMAL almacena precisión exacta y evita errores de redondeo de punto flotante que pueden causar inexactitudes financieras.

¿Qué problemas ocurren cuando se eligen mal los tipos de datos?

Los problemas típicos incluyen ordenamiento/filtrado incorrecto, errores de conversión, almacenamiento desperdiciado, consultas más lentas y lógica de aplicación inconsistente.

Lección 1.4: Comprendiendo los Valores NULL en SQL