Nas definições de tabela do MySQL, existe uma diferença entre INT(5)
e SMALLINT(5)
? Ou ambos representam o mesmo tamanho?
An int
e a smallint
têm tamanhos diferentes e, consequentemente, intervalos.
O (5)
é smallint(5)
ou int(5)
é chamado de "Atributo do tipo numérico" e representa a "largura de exibição" do campo,
O MySQL suporta uma extensão para especificar opcionalmente a largura de exibição de tipos de dados inteiros entre parênteses, seguindo a palavra-chave base para o tipo. Por exemplo,
INT(4)
especifica umINT
com uma largura de exibição de quatro dígitos. Essa largura de exibição opcional pode ser usada por aplicativos para exibir valores inteiros com largura inferior à largura especificada para a coluna, preenchendo-os com espaços à esquerda. (Ou seja, essa largura está presente nos metadados retornados com os conjuntos de resultados. Se é usado ou não, isso depende do aplicativo.)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 comoINT(4) ZEROFILL
, um valor de5
é recuperado como0005
.
Esta é uma "extensão" do MySQL, e zerofill é uma "extensão" em uma extensão.
Para o método sensato de controlar a exibição de um tipo numérico, não use Atributos do tipo numérico e use