INT (5) vs SMALLINT (5): números entre parênteses após o tipo numérico

29

Nas definições de tabela do MySQL, existe uma diferença entre INT(5)e SMALLINT(5)? Ou ambos representam o mesmo tamanho?

BenV
fonte

Respostas:

41

An inte a smallinttê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 um INTcom 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 como INT(4) ZEROFILL, um valor de 5é recuperado como 0005.

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

Derek Downey
fonte