1. Introducción
MySQL es un sistema de gestión de bases de datos relacional muy popular y ampliamente usado en numerosas aplicaciones web y sistemas de bases de datos. Entre sus tipos de datos, el tipo INT es uno de los más utilizados para manejar valores numéricos. Este artículo ofrece una explicación detallada del tipo INT de MySQL. En particular, exploraremos los valores máximos que admite el tipo INT y cómo usarlo de manera eficiente. Al leer este artículo, obtendrá los conocimientos necesarios para utilizar correctamente el tipo INT en MySQL.
2. Especificaciones básicas del tipo INT
Valores máximo y mínimo de INT
El tipo INT de MySQL utiliza 4 bytes (32 bits) de almacenamiento, y el rango de valores que puede almacenar es el siguiente:
- Con signo (SIGNED) :
- Valor mínimo: -2,147,483,648
- Valor máximo: 2,147,483,647
- Sin signo (UNSIGNED) :
- Valor mínimo: 0
- Valor máximo: 4,294,967,295
Tamaño de almacenamiento de INT
El tipo INT siempre ocupa 4 bytes de almacenamiento. Este tamaño permanece constante sin importar el valor almacenado. Por lo tanto, si no necesita manejar un rango numérico muy amplio, es más eficiente considerar tipos de datos más pequeños (por ejemplo, TINYINT o SMALLINT).
Casos de uso para INT
El tipo INT se emplea habitualmente en los siguientes escenarios:
- Valores autoincrementales (p. ej., IDs de usuarios, números de orden)
- Datos enteros usados en cálculos o procesamiento estadístico (p. ej., conteos de inventario, conteos de clics)
- Datos representados dentro de un rango fijo (p. ej., edad o puntuaciones de exámenes)
En estos casos, es importante considerar el rango numérico requerido y la eficiencia de memoria.
3. ¿Qué significa M en INT(M)?
¿Qué es el ancho de visualización (M)?
En MySQL, la M en INT(M) representa el “ancho de visualización”. No afecta al valor numérico real almacenado en la base de datos; en su lugar, especifica cómo se formatea el valor al mostrarse. Por ejemplo, si se define como INT(5), el número se mostrará con un ancho de 5 dígitos.
Sin embargo, el ancho de visualización M solo tiene sentido en el siguiente caso:
- Cuando la opción ZEROFILL está habilitada
- Ejemplo: Con
INT(5) ZEROFILL, si el valor es123, se mostrará como00123.
Notas importantes sobre ZEROFILL
Al usar la opción ZEROFILL, se aplican las siguientes características:
- Se añaden ceros a la izquierda de forma automática.
- El atributo
UNSIGNEDse aplica automáticamente.
Por lo tanto, si necesita almacenar valores negativos, no puede usar ZEROFILL.
Aclarando conceptos erróneos comunes
Muchos principiantes creen erróneamente que M limita el valor máximo almacenable. Sin embargo, M solo afecta al formato de visualización y no tiene ningún impacto en el rango real de almacenamiento.
4. Comparación con otros tipos de entero
Tipos de datos enteros y sus rangos
MySQL proporciona los siguientes tipos de entero:
| Type Name | Bytes | Signed Range | Unsigned Range |
|---|---|---|---|
| TINYINT | 1 byte | -128 to 127 | 0 to 255 |
| SMALLINT | 2 bytes | -32,768 to 32,767 | 0 to 65,535 |
| MEDIUMINT | 3 bytes | -8,388,608 to 8,388,607 | 0 to 16,777,215 |
| INT | 4 bytes | -2,147,483,648 to 2,147,483,647 | 0 to 4,294,967,295 |
| BIGINT | 8 bytes | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | 0 to 18,446,744,073,709,551,615 |
Criterios de selección
Utilice las siguientes directrices al elegir un tipo de dato adecuado en el diseño de bases de datos:
- Si el rango es pequeño: use
TINYINToSMALLINTpara ahorrar memoria. - Si se requiere un rango extremadamente amplio: use
BIGINT. - Si se busca un uso de propósito general:
INTsuele ser la opción óptima.
5. Cambios desde MySQL 8.0.17
Deprecación del ancho de visualización (M)
A partir de MySQL 8.0.17, el “ancho de visualización (M)” para los tipos de entero ha sido deprecado. Este cambio se introdujo junto con la deprecación de la opción ZEROFILL y podría eliminarse en versiones futuras de MySQL.
Las razones para deprecar el ancho de visualización son las siguientes:
- Provocó malentendidos:
- Muchos usuarios interpretaron que
Mafectaba al valor máximo almacenable o al número de dígitos.
- Uso práctico limitado:
- Dado que
Msolo controlaba el formato de visualización, ahora ese formato se maneja comúnmente en la capa de aplicación, reduciendo su necesidad.
Deprecación de ZEROFILL
La opción ZEROFILL también quedó obsoleta en la misma versión. Aunque ZEROFILL era útil para rellenar números con ceros a la izquierda, ya no se recomienda por las siguientes razones:
- Enfoques alternativos generalizados:
- El relleno con ceros ahora puede manejarse fácilmente en la capa de aplicación o de la interfaz de usuario.
- Evitar confusiones:
- La aplicación automática del atributo
UNSIGNEDal usarZEROFILLgeneraba confusión entre los usuarios principiantes.
Cómo adaptarse a la obsolescencia
En respuesta a estas deprecaciones, considere los siguientes enfoques en el diseño de bases de datos:
- Manejar el formato en la capa de aplicación:
- Realice el relleno con ceros y el formateo en la capa de aplicación o de presentación.
- Ejemplo: implemente el relleno con ceros usando PHP o JavaScript.
- Adoptar un diseño que no dependa del ancho de visualización:
- Defina el tipo
INTsin especificarMy concéntrese en la precisión de los datos en lugar del formato de visualización.
6. Sección práctica de preguntas frecuentes
Preguntas frecuentes
Q1. ¿Qué ocurre si almaceno un valor que supera el máximo del tipo INT?
A. En MySQL, intentar almacenar un valor fuera del rango del tipo INT producirá un error. Debe elegir un valor dentro del rango admitido o cambiar a un tipo de datos con un rango mayor (por ejemplo, BIGINT).
Q2. ¿Cuál es la diferencia entre INT y BIGINT?
A. El tipo BIGINT ocupa el doble de espacio que INT (8 bytes) y ofrece un rango numérico mucho más amplio. Por ejemplo, el rango con signo de BIGINT supera ±9 quintillones, lo que lo hace adecuado para manejar conjuntos de datos muy grandes.
Q3. Después de que ZEROFILL quedó obsoleto, ¿cómo debo implementar la visualización con ceros a la izquierda?
A. Se recomienda manejar el relleno con ceros en la capa de aplicación. Por ejemplo, en PHP puede usar la función str_pad(), y en JavaScript puede usar el método padStart() para implementar el relleno con ceros.
Q4. ¿Cómo debo elegir entre INT y otros tipos enteros?
A. Seleccione el tipo según el rango de datos. Los valores numéricos pequeños (por ejemplo, edad o puntuaciones) son adecuados para TINYINT, los datos de escala media (por ejemplo, IDs de usuarios) son adecuados para INT, y los valores muy grandes (por ejemplo, datos de transacciones financieras) son adecuados para BIGINT.
7. Conclusión
En este artículo proporcionamos una explicación detallada del tipo de datos INT de MySQL. Los puntos clave son los siguientes:
- Comprender las diferencias entre los valores máximos y mínimos firmados y sin signo del tipo
INTconstituye la base de un diseño de datos adecuado. - Es importante entender los enfoques alternativos a las opciones obsoletas “ancho de visualización (M)” y “ZEROFILL” y diseñar bases de datos que puedan adaptarse a futuras actualizaciones de MySQL.
- Seleccione el tipo entero apropiado según las características de los datos para construir una base de datos eficiente y mantenible.
Utilice este artículo como referencia para optimizar el uso del tipo INT y mejorar aún más la eficiencia en el diseño de bases de datos MySQL.


