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

tinyint(tamanho), varchar(tamanho):explicação do tamanho


Sua solução para a confusão é-

No Mysql , int(6) não significa que eles podem armazenar até 6 dígitos. não superior a 999999.

No entanto CHAR(6)Isso significa uma coluna de caracteres, com um comprimento máximo de 6 caracteres, como estas palavras:

casas

Se eu tentasse armazenar a palavra “special” nessa coluna, o MySQL cortaria o valor para “specia”, já que a palavra original tem 7 caracteres.

De qualquer forma, todas as colunas inteiras têm um intervalo predefinido de valores permitidos. O número entre parênteses indica apenas a largura da tela.

Isso provavelmente ainda é confuso, então deixe-me explicar mais…

A largura da tela é um número de 1 a 255. Você pode definir a largura da tela se quiser que todos os seus valores inteiros “apareçam” de forma semelhante:

TINYINT[(M)] [NÃO ASSINADO] [ZEROFILL]

M indica a largura máxima de exibição para tipos inteiros. A largura máxima de exibição é 255. A largura de exibição não está relacionada ao intervalo de valores que um tipo pode conter, . Para tipos de ponto flutuante e ponto fixo, M é o número total de dígitos que podem ser armazenados.

Se você especificar ZEROFILL para uma coluna numérica, o MySQL adiciona automaticamente o atributo UNSIGNED à coluna.

Então a resposta da sua pergunta é
create table foo
(
col2 tinyint(2) unsigned zerofill, col4 tinyint(4) unsigned zerofill, col5notzerofill        tinyint(5)  
)engine=innodb;

insert into foo values (1,2,3),(11,12,14),(123,123,156),(1234,1234,12756);
select * from foo;

OUTPUT :-
+------+------+-----------------+
| col2 | col4 | col5notzerofill |
+------+------+-----------------+
|   01 | 0002 |               3 |
|   11 | 0012 |              14 |
|  123 | 0123 |             127 |
|  255 | 0255 |             127 |
+------+------+-----------------+

*Então entenda, no MySQL a largura do display só funciona com zerofill.

*se usar não use zerofill, não é eficaz.

E se você usar zerofill, o mysql verificará a largura de exibição, e se você não atribuir, o mysql atribuirá automaticamente a largura de exibição a essa coluna. *