目次
1. Introducción
MySQL es un sistema de gestión de bases de datos relacional popular que se utiliza en muchas aplicaciones web y sistemas de bases de datos. Dentro de él, el tipo «INT» es uno de los tipos de datos más usados al manejar números. En este artículo se explica en detalle el tipoINT
de MySQL. En particular, se profundiza en el valor máximo que puede tener el tipo INT
y en métodos eficientes de uso. Al leer este artículo, obtendrá el conocimiento necesario para manejar adecuadamente el tipo INT
en MySQL.2. Especificación básica del tipo INT
Valor máximo y mínimo del tipo INT
El tipoINT
de MySQL utiliza un almacenamiento de 4 bytes (32 bits) 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
Capacidad de almacenamiento del tipo INT
El tipoINT
utiliza un almacenamiento fijo de 4 bytes. Esto es constante sin importar el tamaño del valor almacenado. Por lo tanto, si no es necesario manejar un rango muy amplio, es eficiente considerar tipos de datos de menor tamaño (por ejemplo, TINYINT
o SMALLINT
).Casos de uso del tipo INT
El tipoINT
se utiliza frecuentemente en los siguientes escenarios:- Valores autoincrementales (por ejemplo, ID de usuario, número de pedido)
- Datos enteros para cálculos o procesamiento estadístico (por ejemplo, cantidad de inventario, número de clics)
- Representación de datos dentro de un rango fijo (por ejemplo, edad o puntuación)
3. Lo que significa la M en INT(M)
¿Qué es el ancho de visualización (M)?
En MySQL, laINT(M)
, el M
representa el “ancho de visualización”. Esto no afecta al valor numérico almacenado en la base de datos, sino que especifica cómo formatear el número al mostrarse. Por ejemplo, si se define INT(5)
, el número se mostrará con 5 dígitos. Sin embargo, el ancho de visualización M
solo tiene sentido en los siguientes casos:- Opción ZEROFILL está habilitada
- Ejemplo: en
INT(5) ZEROFILL
, si el valor es123
, la visualización será00123
.
Consideraciones sobre ZEROFILL
Al usar la opciónZEROFILL
, se presentan las siguientes características:- Se rellenan ceros a la izquierda.
- Se asigna automáticamente el atributo
UNSIGNED
.
ZEROFILL
.Despejando malentendidos
Muchos principiantes creen erróneamente queM
limita el valor máximo que se puede almacenar, pero M
solo afecta el formato de visualización y no tiene relación alguna con el rango de valores que pueden almacenarse.4. Comparación con otros tipos enteros
Tipos de enteros y sus rangos
En MySQL, se disponen de los siguientes tipos de enteros:Tipo | Bytes | Rango con signo | Rango sin signo |
---|---|---|---|
TINYINT | 1 byte | -128 ~ 127 | 0 ~ 255 |
SMALLINT | 2 bytes | -32,768 ~ 32,767 | 0 ~ 65,535 |
MEDIUMINT | 3 bytes | -8,388,608 ~ 8,388,607 | 0 ~ 16,777,215 |
INT | 4 bytes | -2,147,483,648 ~ 2,147,483,647 | 0 ~ 4,294,967,295 |
BIGINT | 8 bytes | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | 0 ~ 18,446,744,073,709,551,615 |
Criterios de selección
A continuación se presentan los criterios para elegir el tipo adecuado al diseñar una base de datos:- Cuando el rango es pequeño: ahorre memoria con
TINYINT
oSMALLINT
. - Cuando se necesita un rango muy grande: use
BIGINT
. - Cuando se busca versatilidad:
INT
es la mejor opción.
5. Cambios a partir de MySQL 8.0.17
Desuso de la especificación de ancho de visualización (M)
A partir de MySQL 8.0.17, la “especificación de ancho de visualización (M)” para tipos enteros ha sido desaprobada. Este cambio se introdujo junto con la desaprobación de la opciónZEROFILL
, y podría ser eliminado en versiones futuras de MySQL.
A partir de MySQL 8.0.17, la “especificación de ancho de visualización (M)” para tipos enteros ha sido desaprobada. Este cambio se introdujo junto con la desaprobación de la opción ZEROFILL
, y podría ser eliminado en versiones futuras de MySQL. Las razones por las que la especificación de ancho de visualización fue desaprobada son las siguientes:
Las razones por las que la especificación de ancho de visualización fue desaprobada son las siguientes:- Generación de malentendidos:
- Muchos usuarios creían que “M” influía en el valor máximo o en la cantidad de dígitos que se podían almacenar.
- Uso práctico limitado:
- El “M”, que solo tenía la función de formato de visualización, se volvió innecesario ya que normalmente el formateo se realiza en la capa de la aplicación.
Desuso de ZEROFILL
La opción “ZEROFILL” también fue desaprobada en la misma versión.ZEROFILL
era una función útil para rellenar con ceros el ancho de visualización, pero ya no se recomienda por las siguientes razones:
La opción “ZEROFILL” también fue desaprobada en la misma versión. ZEROFILL
era una función útil para rellenar con ceros el ancho de visualización, pero ya no se recomienda por las siguientes razones:- Difusión de métodos alternativos:
- Se han popularizado los métodos para lograr el relleno con ceros en la capa de aplicación o UI.
- Evitar confusión:
- El hecho de que al usar
ZEROFILL
se aplique automáticamenteUNSIGNED
generaba confusión entre los usuarios principiantes.
Medidas frente al desuso
Con el desuso, es necesario considerar las siguientes acciones en el diseño de bases de datos: Con el desuso, es necesario considerar las siguientes acciones en el diseño de bases de datos:- Realizar el formateo en la aplicación:
- Realizar el relleno con ceros y el formateo de los números en la capa de aplicación o de presentación.
- Ejemplo: implementar el relleno con ceros en PHP o JavaScript.
- Adoptar un diseño que no requiera ancho de visualización:
- En la definición del tipo
INT
no se especificaM
, enfocándose en la precisión de los datos en sí.

6. Sección de preguntas frecuentes práctica
Preguntas frecuentes y respuestas
Q1. ¿Qué ocurre si se almacena un valor que supera el máximo del tipo INT? A. En MySQL, si se intenta almacenar un valor que excede el rango del tipoINT
, se producirá un error. Es necesario elegir un valor dentro del rango o cambiar a un tipo de datos con un rango mayor (por ejemplo, BIGINT
). Q2. ¿Cuál es la diferencia entre los tipos INT y BIGINT? A. El tipo BIGINT
utiliza el doble de almacenamiento que el tipo INT
(8 bytes) y su rango de valores es mucho más amplio. Por ejemplo, el rango con signo del tipo BIGINT
supera los ±9×10^16, lo que lo hace adecuado para manejar datos a gran escala. Q3. Después de que ZEROFILL quedó obsoleto, ¿cómo se puede lograr la visualización con ceros a la izquierda? A. Se recomienda realizar el relleno con ceros en la capa de aplicación. Por ejemplo, en PHP se puede usar la función str_pad()
y en JavaScript el método padStart()
para lograr el relleno con ceros. Q4. ¿Cómo elegir entre el tipo INT y otros tipos de enteros? A. Se elige el tipo según el rango de los datos. Los valores pequeños (p. ej., edad o puntuaciones) pueden usar TINYINT
, los datos de tamaño medio (p. ej., ID de usuario) INT
, y los valores muy grandes (p. ej., datos de transacciones financieras) BIGINT
.7. Resumen
En este artículo, se explicó en detalle el tipoINT
de MySQL. A continuación, los puntos importantes son:- Comprender la diferencia entre los valores máximo y mínimo de
INT
con y sin signo es la base para un diseño de datos adecuado. - Es importante conocer los métodos alternativos a la ahora obsoleta “anchura de visualización (M)” y “ZEROFILL”, y esforzarse por un diseño de base de datos que pueda adaptarse a futuras actualizaciones.
- Seleccione el tipo entero adecuado según las características de los datos y construya una base de datos eficiente y fácil de mantener.
INT
y hacer aún más eficiente el diseño de bases de datos en MySQL.