¿Qué son los tipos de datos?
El tipo de dato es la clase de valor que puede guardarse en un campo. Es la primera decisión que se toma al crear una tabla, porque define qué se puede escribir ahí y qué no.
El tipo cumple tres funciones a la vez, y las tres importan:
- Controla lo que se acepta. Un campo definido como número entero rechaza el texto. Es la primera barrera contra los datos mal cargados.
- Define qué operaciones tienen sentido. Con fechas se puede calcular una diferencia de días; con texto, no. Con números se puede sumar y promediar.
- Decide cuánto espacio ocupa. Un entero pequeño ocupa un byte; uno grande, ocho. Multiplicado por millones de filas, la diferencia se nota en disco y en velocidad.
Elegir mal un tipo no siempre da error enseguida. Muchas veces funciona igual durante meses y el problema aparece cuando hay que ordenar, comparar o calcular algo, y resulta que el dato se guardó como texto.
Numéricos
Se dividen en dos grupos con comportamientos muy distintos: los enteros y los decimales.
Enteros
Guardan números sin parte decimal, y se diferencian por el rango que abarcan: a mayor rango, más espacio ocupa cada valor.
| Tipo | Espacio | Para qué alcanza |
|---|---|---|
TINYINT | 1 byte | Valores de 0 a 255. Ideal para edades, cantidades chicas o para representar sí y no. |
SMALLINT | 2 bytes | Hasta unos 65.000. Años, cantidades medianas. |
MEDIUMINT | 3 bytes | Hasta unos 16 millones. |
INT o INTEGER | 4 bytes | Hasta unos 4.300 millones. Es el entero que se usa por defecto, y alcanza para casi todo. |
BIGINT | 8 bytes | Números gigantes. Se usa en identificadores de sistemas muy grandes. |
Decimales
Acá está la distinción más importante de toda la sección, y una de las que más errores causa en la práctica:
| Tipo | Cómo guarda el número | Se usa para |
|---|---|---|
FLOAT y DOUBLE |
De forma aproximada, con una cantidad limitada de dígitos significativos. | Cálculos científicos, medidas, gráficos. Donde un error minúsculo no importa. |
DECIMAL o NUMERIC |
De forma exacta: guarda los dígitos tal como se escriben. | Todo lo que tenga que ver con dinero y con valores contables. |
FLOAT para dinero. Los tipos aproximados no pueden representar de forma exacta todos los decimales, así que un saldo puede terminar en 1234.9999999 en lugar de 1235. Sumado miles de veces, el error crece y las cuentas no cierran. Para cualquier importe, siempre DECIMAL.
Texto
Se diferencian por dos cosas: si la longitud es fija o variable, y cuánto texto pueden guardar.
| Tipo | Longitud | Dónde conviene |
|---|---|---|
CHAR(n) |
Fija: siempre ocupa n caracteres, aunque se escriba menos. |
Datos de longitud constante y conocida: un código de dos letras, un documento de longitud fija. |
VARCHAR(n) |
Variable: ocupa solo lo que se escribe, hasta un máximo de n. |
Casi todo: nombres, direcciones, correos, títulos. |
TEXT y variantes |
Textos extensos, sin una longitud declarada de antemano. | Descripciones largas, observaciones, contenido de un artículo. |
La diferencia entre CHAR y VARCHAR tiene una consecuencia concreta: CHAR(50) siempre ocupa 50, aunque se escriba "Ana" —el resto se rellena con espacios—, mientras que VARCHAR(50) con "Ana" ocupa 3. Por eso VARCHAR es la opción habitual: ahorra espacio y no obliga a adivinar la longitud exacta.
Fecha y hora
Son tipos propios, y no texto: guardarlos como texto es un error frecuente que impide ordenar cronológicamente y calcular diferencias.
| Tipo | Qué guarda | Formato |
|---|---|---|
DATE | Una fecha. | AAAA-MM-DD |
TIME | Una hora. | HH:MM:SS |
DATETIME | Fecha y hora juntas. | AAAA-MM-DD HH:MM:SS |
TIMESTAMP | Una marca de tiempo, que el sistema puede actualizar solo. | AAAA-MM-DD HH:MM:SS |
YEAR | Un año, en cuatro cifras. | AAAA |
Hay dos cosas que conviene saber de estos tipos. La primera: el formato que se muestra no es el que se guarda. Internamente la fecha es un número; que se vea como AAAA-MM-DD es solo la forma de mostrarla, y se puede cambiar sin tocar los datos. La segunda: TIMESTAMP se usa para auditoría —saber cuándo se creó o se modificó una fila— porque el gestor puede completarlo solo en cada operación, sin que el programa tenga que acordarse.
Booleanos
Un booleano solo puede tomar dos valores: verdadero o falso. Es el tipo de los estados de sí o no: si un libro está disponible, si un alumno está activo, si un pedido ya se entregó.
Conviene saber que no todos los gestores tienen un tipo booleano de verdad. MySQL, por ejemplo, acepta la palabra BOOLEAN pero internamente lo guarda como un entero de un byte, donde 0 es falso y 1 es verdadero. Funciona igual, pero explica por qué a veces los resultados de una consulta muestran 0 y 1 en lugar de false y true.
Binarios
Los tipos binarios permiten guardar datos que no son texto: imágenes, audios, archivos comprimidos, documentos. El principal es BLOB (Binary Large Object), con variantes según el tamaño que admiten.
Cómo elegir un tipo de dato
La elección de un tipo no es un trámite: cada decisión tiene consecuencias sobre el espacio, la velocidad y la posibilidad de cometer errores.
| Pregunta | Por qué importa |
|---|---|
| ¿Qué se va a guardar exactamente? | Un documento con letras y números se guarda como texto aunque parezca un número. Una fecha no se guarda nunca como texto. |
| ¿Va a hacer falta calcular con ese dato? | Si hay que sumar, promediar u ordenar, tiene que ser un tipo numérico. Si es para mostrar, el texto alcanza. |
| ¿Tiene que ser exacto? | Todo lo que sea dinero va con DECIMAL, sin excepción. |
| ¿Cuál es la longitud máxima realista? | Poner un límite razonable en los textos evita que alguien cargue un párrafo donde va un nombre. |
| ¿Cuántas filas va a tener la tabla? | Con miles de filas el espacio no importa. Con millones, elegir un entero más chico o un límite más ajustado en los textos ahorra mucho disco. |
Y un criterio práctico que resume todo: el tipo más chico que cubra lo que se necesita. No hace falta reservar espacio "por las dudas"; si el dato crece, ampliar el tipo más adelante es una operación simple.
Resumen
| Grupo | La idea que hay que recordar |
|---|---|
| Enteros | Se diferencian por el rango. INT alcanza para casi todo. |
| Decimales | FLOAT es aproximado; DECIMAL es exacto. El dinero siempre va con DECIMAL. |
| Texto | CHAR ocupa siempre lo mismo; VARCHAR ocupa lo que se escribe. |
| Fecha y hora | Son tipos propios, nunca texto. TIMESTAMP sirve para auditoría. |
| Booleanos | Dos valores. En varios gestores se guardan como un entero de 0 y 1. |
| Binarios | Para archivos. Casi siempre conviene guardar la ruta y no el archivo. |
| Cómo elegir | El tipo más chico que cubra lo que se necesita, y exacto cuando hay que serlo. |