MySQL: ¿Por qué especificar el ancho de visualización sin usar zerofill?

Recientemente he profundizado en el apasionante mundo de SQL. Todavía estoy tratando de envolver mi cabeza en torno a los conceptos. He estado siguiendo tutoriales en línea. Muchos de estos tutoriales contienen SQL para hacer una tabla como esta.

CREATE TABLE `users` (
     `id` tinyint(4) NOT NULL AUTO_INCREMENT,
     `username` varchar(10) NOT NULL,
     `password` varchar(100) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Después de ver líneas comoid tinyint(4)Me pregunté qué pasa el parámetro al tipo de datos. Pensé "¿eso significa que id puede ser cualquier número entero entre -128 y 127 (no más de 4 caracteres)?"

Así que consulté los documentos. Esto es lo queLos documentos de MySQL tienen que decir sobre los atributos de tipo de número.

El ancho de visualización no limita el rango de valores que se pueden almacenar en la columna. Tampoco impide que los valores más anchos que el ancho de visualización de la columna se muestren correctamente. Por ejemplo, una columna especificada como SMALLINT (3) tiene el rango SMALLINT habitual de -32768 a 32767, y los valores fuera del rango permitido por tres dígitos se muestran completos usando más de tres dígitos

Cuando se usa junto con el atributo ZEROFILL opcional (no estándar), el relleno de espacios predeterminado se reemplaza con ceros. Por ejemplo, para una columna declarada como INT (4) ZEROFILL, un valor de 5 se recupera como 0005.

Así que si estoy leyendo esto correctamente, declaro cosas comoINT(255) son inútiles a menos que esté utilizando zerofill. Ok tiene sentido que declare un tipo de datos, la base de datos asigna suficiente espacio para esa base de datos.

Entonces, ¿por qué la gente escribe código como este? ¿Sirve un propósito? ¿Estoy completamente malentendido?

Respuestas a la pregunta(1)

Su respuesta a la pregunta