Tipos de datos: ¿qué pasa si elijo mal?
FLOAT y una fecha no se guarda como texto.1. El tipo es una promesa
Cuando creás una tabla, cada columna declara un tipo: qué clase de dato acepta y cuánto espacio ocupa. El servidor controla esa promesa cada vez que guardás algo. Si el valor encaja, lo guarda; si se puede arreglar, lo convierte; si no entra, lo rechaza con un error.
El peligro está en el medio: a veces el servidor convierte el valor y lo guarda distinto de como lo escribiste, sin ninguna advertencia.
2. Probá un dato y un tipo
Elegí un dato real y el tipo de la columna. Antes de empezar podés predecir qué va a pasar. Después avanzá paso a paso: el gestor mira el tipo, convierte o rechaza, y al final verificás con un SELECT qué quedó guardado.
Tipos de datos: ¿qué pasa si elijo mal?
Qué se simplifica
Es una simulación con datos de ejemplo: no se conecta a MySQL ni ejecuta SQL real. Los resultados son los de MySQL 8.0 con el modo estricto por defecto; con otra configuración o en MariaDB algunos errores pueden convertirse en avisos.
3. Qué aprendés de cada caso
| Dato | Elección | Qué pasa |
|---|---|---|
DNI '04123456' | INT o BIGINT | Se guarda 4123456: pierde el cero y no avisa |
DNI '04123456' | VARCHAR(10) | Se guarda igual. Un identificador no se suma: es texto |
| 0.10 y 0.20 | FLOAT | La suma da 0.30000000447… y no es igual a 0.3 |
| 0.10 y 0.20 | DECIMAL(10,2) | Suma exacta: 0.30 |
| 0.10 y 0.20 | INT | Redondea a 0 y 0, sin avisar |
'31/12/2026' | DATE | ERROR 1292: el formato es aaaa-mm-dd |
'31/12/2026' | VARCHAR(10) | Se guarda, pero ordena como texto: 01/01/2027 queda antes |
| 300 | TINYINT | ERROR 1264: fuera de rango |
| Texto de 170 caracteres | VARCHAR(160) | ERROR 1406: demasiado largo |
'veinte' | INT | ERROR 1366: valor entero incorrecto |
'veinte' | VARCHAR(20) | Se guarda, pero no se puede sumar ni comparar como número |
4. Cómo decidir el tipo
- ¿Voy a hacer cuentas con él? Si no (DNI, teléfono, código postal), es texto:
VARCHARoCHAR. - ¿Es dinero o necesita exactitud?
DECIMAL(p,s), nuncaFLOAT. - ¿Es una fecha?
DATEoDATETIME. Se escribeaaaa-mm-dd. - ¿Cuál es el rango real? Elegí el entero más chico que alcance con margen.
- ¿Cuánto mide el texto? Sumá margen, pero no pongas 255 por costumbre.
5. Autoevaluación
- Guardás un DNI en una columna
INT. ¿Qué le pasa al DNI04123456? - ¿Por qué
SUMde dosFLOATpuede no dar exactamente0.3? - Insertás
'31/12/2026'en una columnaDATE. ¿Qué pasa y cómo se arregla? - ¿Qué es peor: un error del servidor o un dato guardado mal sin aviso? ¿Por qué?
Ver las respuestas
- Se guarda como
4123456: el cero inicial se pierde y el servidor no avisa. FLOATguarda una aproximación binaria;DECIMALguarda dígitos exactos.- Da
ERROR 1292. Se arregla escribiendo la fecha como'2026-12-31'. - Lo segundo: el error se ve y se corrige; el dato mal guardado queda en la base y se descubre tarde.
Para insertar en el aula
Copiá este código y pegalo en el editor del aula, en la vista de código fuente (HTML). Usa solo atributos, sin estilos, porque el editor del aula suele quitarlos. Incluye allowfullscreen para que el botón de pantalla completa funcione dentro del aula.