En las definiciones de tabla de MySQL, ¿hay alguna diferencia entre INT(5)
y SMALLINT(5)
? ¿O ambos representan el mismo tamaño?
An int
y a smallint
tienen diferentes tamaños y consecuentemente rangos.
El (5)
es smallint(5)
o int(5)
se llama "Atributo de tipo numérico" y representa el "ancho de visualización" del campo,
MySQL admite una extensión para especificar opcionalmente el ancho de visualización de los tipos de datos enteros entre paréntesis después de la palabra clave base para el tipo. Por ejemplo,
INT(4)
especifica unINT
con un ancho de visualización de cuatro dígitos. Las aplicaciones pueden usar este ancho de visualización opcional para mostrar valores enteros que tengan un ancho menor que el ancho especificado para la columna al rellenarlos con espacios a la izquierda. (Es decir, este ancho está presente en los metadatos devueltos con los conjuntos de resultados. Si se usa o no, depende de la aplicación).Cuando se usa junto con el atributo opcional (no estándar)
ZEROFILL
, el relleno predeterminado de espacios se reemplaza con ceros. Por ejemplo, para una columna declarada comoINT(4) ZEROFILL
, un valor de5
se recupera como0005
.
Esta es una "extensión" de MySQL, y zerofill es una "extensión" en una extensión.
Para el método sensato de controlar la visualización de un tipo numérico, no use Atributos de tipo numérico y en su lugar use