🎯 Quedan pocos días este mes Apoya SQLTest.online y ayúdanos a mantener la práctica de SQL gratuita para todos. Dona hoy →
Código SQL copiado al portapapeles

Tipos de datos SQL: INTEGER, VARCHAR, DATE y más

Lección 1.4 · Tiempo de lectura: ~8 min · Tareas de práctica ↓

Los tipos de datos definen qué clase de valores puede guardar cada columna de una base de datos relacional. En esta lección conocerás los tipos de datos SQL más habituales, cuándo usar cada uno y cómo una buena elección mejora la calidad de los datos, el uso del almacenamiento y el rendimiento de las consultas.

En la lección anterior vimos las tablas, las claves, las restricciones y ACID. Ahora pasamos a una decisión práctica de diseño que tomas en cada tabla: elegir el tipo de datos adecuado para cada columna.

Comparación de los tipos de datos SQL numéricos, de texto y de fecha y hora que se usan al diseñar las columnas de una tabla

Antes de entrar en los subtipos, estos son los principales grupos de tipos de datos SQL:

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

¿Qué son los tipos de datos numéricos en SQL?

Los tipos numéricos guardan números, pero no todos los números deben guardarse igual. En la práctica eliges entre:

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

Familia INTEGER

Los tipos enteros guardan números sin decimales.

TipoTamaño habitualRango aproximado con signo
TINYINT1 bytede -128 a 127
SMALLINT2 bytesde -32.768 a 32.767
INTEGER / INT4 bytesde -2.147.483.648 a 2.147.483.647
BIGINT8 bytesde -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 de tipos con y sin signo.

DECIMAL / NUMERIC

DECIMAL guarda valores exactos con una precisión fija.

  • DECIMAL(p, s) significa:
    • p = número total de dígitos,
    • s = dígitos después del separador decimal.
  • Ejemplo: DECIMAL(10, 2) admite valores de hasta 99.999.999,99.
  • Es la mejor opción para precios, facturas, impuestos y cualquier valor donde la exactitud sea obligatoria.

FLOAT / REAL / DOUBLE

Los tipos de coma flotante guardan valores aproximados.

  • Son adecuados para cálculos científicos y datos de telemetría.
  • No son ideales para importes de dinero, porque la coma flotante binaria puede introducir pequeñas diferencias de redondeo.
  • DOUBLE suele ofrecer más precisión que FLOAT.

¿Qué son los tipos de datos de texto en SQL?

Los tipos de texto se diferencian sobre todo en cómo tratan la longitud y en cómo se almacenan.

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 los códigos de país ISO.

VARCHAR

  • Texto de longitud variable con un límite máximo.
  • VARCHAR(255) guarda hasta 255 caracteres, pero solo usa el espacio necesario.
  • Buena opción por defecto para nombres, correos electrónicos, títulos y etiquetas.

TEXT

  • Texto largo de longitud variable.
  • Útil para descripciones largas, cuerpos de artículos, comentarios o registros.
  • Su comportamiento y los límites de indexación pueden variar 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 la marca de tiempo de un evento.

DATE

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

TIME

Guarda solo hora-minuto-segundo.

DATETIME / TIMESTAMP

Guarda la fecha y la hora.

En algunos sistemas TIMESTAMP tiene en cuenta la zona horaria, mientras que DATETIME suele ser independiente de ella. Comprueba siempre cómo se comporta tu SGBD antes de diseñar tablas de auditoría o de eventos.

¿Qué otros tipos de datos conviene conocer?

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

  • BOOLEAN: guarda valores verdadero/falso.
  • BLOB: guarda contenido binario, como imágenes o archivos.
  • JSON: guarda documentos JSON semiestructurados y a menudo admite funciones e índices sobre JSON.

¿Cómo elegir el tipo de datos adecuado?

Usa esta lista de comprobación práctica:

  • Elige el tipo más pequeño que cubra con seguridad los valores esperados.
  • Usa DECIMAL para el dinero; evita FLOAT para importes financieros.
  • Prefiere VARCHAR a CHAR, salvo que la longitud de los datos sea realmente fija.
  • Guarda fechas y horas con tipos temporales, no como texto.
  • Revisa el comportamiento propio de tu base de datos en valores por defecto, zonas horarias e indexación.

Elegir bien los tipos de datos al diseñar reduce las migraciones de datos futuras, los errores en la aplicación y las caídas de rendimiento.


Puntos clave de esta lección:

  • Los tipos de datos definen qué valores puede guardar una columna e influyen mucho en la calidad de los datos.
  • Los tipos numéricos sirven para objetivos distintos: números enteros, decimales exactos y valores aproximados de coma flotante.
  • CHAR, VARCHAR y TEXT se eligen según la longitud esperada del texto y la forma de almacenarlo.
  • Los campos de fecha y hora deben usar DATE, TIME o TIMESTAMP en lugar de texto.
  • Elegir el tipo correcto desde el principio evita errores, limpiezas de datos y problemas de rendimiento más adelante.

Preguntas frecuentes

¿Qué diferencia hay entre DECIMAL y FLOAT?

DECIMAL guarda valores exactos y es la mejor opción para el dinero. FLOAT guarda valores aproximados y puede introducir diferencias de redondeo, por lo que es más adecuado para cálculos de tipo científico.

¿Debo usar CHAR o VARCHAR para nombres y correos electrónicos?

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

¿NULL es un tipo de datos?

No. NULL significa un valor ausente o desconocido. No es un tipo de datos aparte, sino un marcador especial que puede aparecer en las columnas, según sus restricciones.

Preguntas de entrevista

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

Estima el rango de valores esperado y elige el tipo más pequeño que lo cubra con seguridad. Así ahorras espacio y evitas el desbordamiento.

¿Por qué se prefiere DECIMAL para los importes de dinero?

Porque DECIMAL guarda una precisión exacta y evita los errores de redondeo de la coma flotante, que pueden causar imprecisiones financieras.

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

Los problemas típicos son ordenaciones y filtros incorrectos, errores de conversión, espacio desperdiciado, consultas más lentas y lógica inconsistente en la aplicación.

Intenta resolver las siguientes tareas para reforzar lo que aprendiste en esta lección.

  1. ¿Qué tipo usar para el dinero?