Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL:Por que especificar a largura da tela sem usar zerofill


Essa largura de exibição de "recurso" adicional é bastante confusa, porque em outros tipos de coluna como CHAR é especifica o comprimento.

Aqui está um pequeno detalhamento:
  • Mais importante:não especificando o "espaço de armazenamento" ou "número de dígitos". Está apenas dizendo como os dados nesta coluna são formatados antes de ser devolvido. INT(5) pode armazenar o mesmo valores como INT(16) ou INT(255) - todos os três podem armazenar todos (e somente) valores válidos para INT. INT(255) não pode armazenar um número com 255 dígitos. O espaço de armazenamento para todos eles é o espaço que um INT ocupa.
  • Se você usar ZEROFILL em uma coluna com largura de exibição e a representação de string do número armazenado for menor que a largura de exibição, ela será preenchida com zeros à esquerda. Se for mais longo, nada acontece. Se você escolher INT(5) e o valor for 13, ele será retornado como 00013. Se o valor for 123456, ele será retornado como 123456.
  • Se você não usar ZEROFILL , não haverá preenchimento (sem espaços e tal)
  • Se você usar ZEROFILL , você deve estar ciente de que a coluna também será UNSIGNED
  • Em qualquer caso, a largura de exibição é retornada quando os metadados da tabela são consultados. Assim, um aplicativo pode saber como os dados devem ser formatados.

Eu não gosto da largura de exibição, porque a camada de armazenamento está "sabendo" sobre a apresentação visual dos dados armazenados. Além disso, não há nenhum uso que eu saiba.