BD InteractivaBase de Datos II · ISFD Mercedes

← Catálogo

Semana 2 · Material complementario

Tipos de datos: ¿qué pasa si elijo mal?

Al terminar vas a poderelegir el tipo de una columna según el dato que va a guardar; distinguir un error del servidor de un dato que se guarda mal sin avisar; y explicar por qué un DNI no es un número, un precio no es un 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.

SEMANA 2 · SIMULACIÓN DIDÁCTICA

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.

Cargando la simulación…Si no aparece, tu navegador tiene desactivado JavaScript, que esta animación necesita.

3. Qué aprendés de cada caso

DatoElecciónQué pasa
DNI '04123456'INT o BIGINTSe 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.20FLOATLa suma da 0.30000000447… y no es igual a 0.3
0.10 y 0.20DECIMAL(10,2)Suma exacta: 0.30
0.10 y 0.20INTRedondea a 0 y 0, sin avisar
'31/12/2026'DATEERROR 1292: el formato es aaaa-mm-dd
'31/12/2026'VARCHAR(10)Se guarda, pero ordena como texto: 01/01/2027 queda antes
300TINYINTERROR 1264: fuera de rango
Texto de 170 caracteresVARCHAR(160)ERROR 1406: demasiado largo
'veinte'INTERROR 1366: valor entero incorrecto
'veinte'VARCHAR(20)Se guarda, pero no se puede sumar ni comparar como número
AtenciónLos resultados corresponden a MySQL 8.0 con el modo estricto activado (el valor por defecto). Con otra configuración, o en MariaDB, algunos errores pueden convertirse en avisos y el valor guardarse recortado.

4. Cómo decidir el tipo

  1. ¿Voy a hacer cuentas con él? Si no (DNI, teléfono, código postal), es texto: VARCHAR o CHAR.
  2. ¿Es dinero o necesita exactitud? DECIMAL(p,s), nunca FLOAT.
  3. ¿Es una fecha? DATE o DATETIME. Se escribe aaaa-mm-dd.
  4. ¿Cuál es el rango real? Elegí el entero más chico que alcance con margen.
  5. ¿Cuánto mide el texto? Sumá margen, pero no pongas 255 por costumbre.

5. Autoevaluación

  1. Guardás un DNI en una columna INT. ¿Qué le pasa al DNI 04123456?
  2. ¿Por qué SUM de dos FLOAT puede no dar exactamente 0.3?
  3. Insertás '31/12/2026' en una columna DATE. ¿Qué pasa y cómo se arregla?
  4. ¿Qué es peor: un error del servidor o un dato guardado mal sin aviso? ¿Por qué?
Ver las respuestas
  1. Se guarda como 4123456: el cero inicial se pierde y el servidor no avisa.
  2. FLOAT guarda una aproximación binaria; DECIMAL guarda dígitos exactos.
  3. Da ERROR 1292. Se arregla escribiendo la fecha como '2026-12-31'.
  4. 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.

Ver el código