Qual é o tamanho da coluna do int (11) no mysql em bytes?

Qual é o tamanho da coluna do int(11) no mysql em bytes?

E valor máximo que pode ser armazenado nessas colunas?

Um INT será sempre 4 bytes, independentemente do comprimento especificado.

  • TINYINT = 1 byte (8 bits)
  • SMALLINT = 2 bytes (16 bits)
  • MEDIUMINT = 3 bytes (24 bits)
  • INT = 4 bytes (32 bits)
  • BIGINT = 8 bytes (64 bits).

O comprimento apenas especifica quantos caracteres para exibir ao selecionar dados com o cliente de linha de comando mysql.

… e o valor máximo será 2147483647 (assinado) ou 4294967295 (não assinado)

INT ( somenumber ) fará diferença apenas em termos de exibição , ou seja, para mostrar o número em algarismos de “um número ” e não restringir-se apenas a 11. Você o emparelha usando ZEROFILL , que irá pré-adicionar os zeros até que corresponda ao seu comprimento

Note que o valor armazenado no database não é afetado, qualquer cálculo ainda se comportará como está.

Observações:

  • se o valor tiver menos dígitos que ‘ somenumber ‘, ZEROFILL irá ZEROFILL zeros.

    INT (5) ZEROFILL com o valor armazenado de 32 mostrará 00032
    INT (5) com o valor armazenado de 32 mostrará 32
    INT com o valor armazenado de 32 mostrará 32

  • se o valor tiver mais dígitos que ‘ somenumber ‘, o valor armazenado será mostrado.

    INT (3) ZEROFILL com o valor armazenado de 250000 mostrará 250000
    INT (3) com o valor armazenado de 250000 mostrará 250000
    INT com o valor armazenado de 250000 mostrará 250000

O semelhante se aplica também ao BIGINT, MEDIUMINT, SMALLINT e TINYINT.

De acordo com aqui , int(11) terá 4 bytes de espaço que é 32 bits de espaço com 2^(31) = 2147483648 valor máximo e -2147483648 min valor. Um bit é por sinal.

Como outros já disseram, os valores mínimo / máximo que a coluna pode armazenar e quanto espaço de armazenamento leva em bytes é definido apenas pelo tipo, não pelo tamanho.

Muitas dessas respostas estão dizendo que a parte (11) afeta apenas a largura da canvas, o que não é exatamente verdade, mas principalmente.

Uma definição de int(2) sem nenhum zerofill especificado irá:

  • ainda aceita um valor de 100
  • ainda exibir um valor de 100 quando a saída (não 0 ou 00 )
  • a largura da canvas será a largura do maior valor que está sendo produzido na consulta selecionada.

A única coisa que o (2) fará é se zerofill também for especificado :

  • um valor de 1 será mostrado 01 .
  • Ao exibir valores, a coluna sempre terá uma largura do valor máximo possível que a coluna pode receber, que é de 10 dígitos para um número inteiro, em vez da largura mínima exigida para exibir o maior valor que a coluna precisa mostrar nessa consulta específica. , o que poderia ser muito menor.
  • A coluna ainda pode receber e mostrar um valor que exceda o comprimento, mas esses valores não serão prefixados com 0s.

A melhor maneira de ver todas as nuances é executar:

 CREATE TABLE `mytable` ( `id` int(11) NOT NULL AUTO_INCREMENT, `int1` int(10) NOT NULL, `int2` int(3) NOT NULL, `zerofill1` int(10) ZEROFILL NOT NULL, `zerofill2` int(3) ZEROFILL NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `mytable` (`int1`, `int2`, `zerofill1`, `zerofill2`) VALUES (10000, 10000, 10000, 10000), (100, 100, 100, 100); select * from mytable; 

qual produzirá:

 +----+-------+-------+------------+-----------+ | id | int1 | int2 | zerofill1 | zerofill2 | +----+-------+-------+------------+-----------+ | 1 | 10000 | 10000 | 0000010000 | 10000 | | 2 | 100 | 100 | 0000000100 | 100 | +----+-------+-------+------------+-----------+ 

Observe como a coluna int1 tem uma largura de exibição muito menor que zerofill2 , embora o comprimento seja maior.

Esta resposta é testada contra o MySQL 5.7.12 para Linux e pode ou não variar para outras implementações.

Qual é o tamanho da coluna do int (11) no mysql em bytes?

(11) – este atributo do tipo de dados int não tem nada a ver com o tamanho da coluna. É apenas a largura de exibição do tipo de dados inteiro. De 11.1.4.5. Atributos de tipo numérico :

O MySQL suporta uma extensão para especificar opcionalmente a largura de exibição dos tipos de dados inteiros em parênteses após a palavra-chave base para o tipo. Por exemplo, INT (4) especifica um INT com uma largura de exibição de quatro dígitos.

Uma boa explicação para isso pode ser encontrada aqui

Para resumir: O número entre parênteses em int (N) é frequentemente confundido pelo tamanho máximo permitido para a coluna, como acontece no caso de varchar (N).

Mas esse não é o caso dos tipos de dados Integer – o número N no colchete não é o tamanho máximo da coluna, mas simplesmente um parâmetro para dizer ao MySQL que largura exibir a coluna quando os dados da tabela estão sendo visualizados via MySQL. console (quando você está usando o atributo ZEROFILL).

O número entre parênteses dirá ao MySQL quantos zeros devem ser preenchidos com números inteiros. Por exemplo: Se você estiver usando o ZEROFILL em uma coluna definida como INT (5) e o número 78 inserido, o MySQL irá preencher esse valor com zeros até que o número satisfaça o número entre colchetes. ou seja, 78 se tornará 00078 e 127 se tornarão 00127. Para resumir: O número entre parênteses é usado para fins de exibição.
De certa forma, o número entre parênteses é inútil, a menos que você esteja usando o atributo ZEROFILL.

Assim, o tamanho para int permaneceria igual ou seja, -2147483648 a 2147483648 para assinados e 0 a 4294967295 para não assinados (~ 2.15 bilhões e 4.2 bilhões, uma das razões pelas quais os desenvolvedores permanecem inconscientes da história por trás do Número N entre parênteses, pois dificilmente afeta o database, a menos que contenha mais de 2 bilhões de linhas) e, em termos de bytes, seria de 4 bytes .

Para mais informações sobre o tamanho / intervalo dos Tipos Inteiros, consulte o Manual do MySQL.

Embora seja improvável que essa resposta seja vista, acho que vale a pena fazer o seguinte esclarecimento:

  • o (n) por trás de um tipo de dados inteiro no MySQL está especificando a largura da canvas
  • a largura da canvas NÃO limita o comprimento do número retornado de uma consulta
  • a largura do display NÃO limita o número de zeros preenchidos para uma coluna preenchida com zero, portanto o número total corresponde à largura de exibição (desde que o número real não exceda a largura de exibição, caso em que o número é mostrado como está)
  • a largura da canvas também serve como uma ferramenta útil para os desenvolvedores saberem a que comprimento o valor deve ser preenchido para

UM POUCO DE DETALHE
a largura de exibição é, aparentemente, destinada a fornecer alguns metadados sobre quantos zeros exibir em um número preenchido com zero.
Na verdade, ele NÃO limita o comprimento de um número retornado de uma consulta se esse número ultrapassar a largura de exibição especificada.
Para saber qual comprimento / largura é realmente permitido para um tipo de dado inteiro no MySQL, veja a lista e link: ( tipos: TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT );
Portanto, tendo dito o acima, você pode esperar que a largura de exibição não tenha nenhum efeito nos resultados de uma consulta padrão, a menos que as colunas sejam especificadas como colunas ZEROFILL
OU
no caso os dados estão sendo puxados para dentro de um aplicativo e esse aplicativo está coletando a largura de exibição para usar em outro tipo de preenchimento.

Referência Primária: https://blogs.oracle.com/jsmyth/entry/what_does_the_11_mean

No MySQL, integer int(11) tem tamanho de 4 bytes, o que equivale a 32 bits.

O valor assinado é: – 2^(32-1) to 0 to 2^(32-1)-1 = -2147483648 to 0 to 2147483647

Os valores não assinados são: 0 to 2^32-1 = 0 to 4294967295

Acho que o valor máximo de int (11) é 4294967295

4294967295 é a resposta, porque int (11) mostra um máximo de 11 dígitos IMO