MySQL: Por que especificar a largura de exibição sem usar o zerofill

Eu recentemente mergulhei no excitante mundo do SQL. Eu ainda estou tentando envolver minha cabeça em torno dos conceitos. Eu tenho acompanhado tutoriais online. Muitos desses tutoriais contêm SQL para criar uma tabela como essa.

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 ;

Depois de ver linhas comoid tinyint(4)Eu me perguntei o que o parâmetro passou para o tipo de dados. Eu pensei "isso significa que id pode ser qualquer número inteiro entre -128 e 127 (não mais que 4 caracteres)?"

Então eu consultei os documentos. Isso é o queDocs MySQL tem a dizer sobre os atributos do tipo de número.

A largura da tela não restringe o intervalo de valores que podem ser armazenados na coluna. Também não impede que valores maiores do que a largura de exibição da coluna sejam exibidos corretamente. Por exemplo, uma coluna especificada como SMALLINT (3) tem o intervalo SMALLINT usual de -32768 a 32767 e os valores fora do intervalo permitido por três dígitos são exibidos na íntegra usando mais de três dígitos

Quando usado em conjunto com o atributo opcional (não padrão) ZEROFILL, o preenchimento padrão de espaços é substituído por zeros. Por exemplo, para uma coluna declarada como INT (4) ZEROFILL, um valor de 5 é recuperado como 0005.

Então, se eu estou lendo isso certo, declarando coisas comoINT(255) são inúteis, a menos que você esteja usando o zerofill. Ok, faz sentido você declarar um tipo de dados que o banco de dados aloca espaço suficiente para esse banco de dados.

Então, por que as pessoas escrevem código assim? Isso serve a um propósito? Eu estou completamente incompreendido?

questionAnswers(1)

yourAnswerToTheQuestion