Publicidade   
 você está aqui: phpbrasil.com    artigos    artigo  
 
:: novos artigos ::

:: recomendado ::

PHP 4: a Bíblia

Compre esse livro no Submarino.com.br

:: publicidade ::


:: novos scripts ::

:: elenco phpbrasil ::

Renato Campoy
Pontos: 2204

Visite a página de perfil de Celso EndoOs parênteses em campos numéricos do MySQL
por Celso Endo
Lista de Categorias  |  Contribua um Novo Artigo  |  Entre em Contato Conosco

"Campo INT(5)... o que isso quer dizer? Que eu posso guardar até 5 dígitos nesse campo, ou melhor, o valor máximo do campo será 99999?" Não! Muitas pessoas utilizam esses parênteses achando que significa o número máximo de dígitos para o campo, como em varchar() ou char(), mas isso não é verdade.
Vote aqui!
Média de Votos Atual: 9.67
Total de Votos: 3
Nota:   

Vejo muitas pessoas que confundem os parênteses dessas colunas númericas (TINYINT, SMALLINT, MEDIUMINT, INT e BIGINT) do MySQL com os parênteses de colunas de caracteres (CHAR e VARCHAR). Admito que no começo, eu também me confundia com isso, até o dia que resolvi pesquisar na documentação do MySQL, fazer alguns testes, e vi que não era bem como eu pensava ser.

Como ainda hoje muitas pessoas se questionam com isso e tive/tenho que fazer muitas entrarem na documentação do MySQL para provar por A+B que não funcionam da mesma forma que CHAR e VARCHAR, então resolvi criar esse artigo, que parece ser uma coisa simples (e é!!!), mas que anda confundindo muitas pessoas.

Para quem já sabe o verdadeiro significado desses parênteses, convido-os a lerem mesmo assim e me corrijam se eu também estiver errado! :)

E para quem pensava até hoje que os parênteses significam o valor máximo a ser armazenado, ou o número de dígitos máximo, leiam e vejam a verdade!


<< Anterior 1 2 3 Próxima >>

 
Imprimir  |  Enviar para um Amigo


Comentários de Usuários

Incrível
publicado por m33063 - 2007-05-04 06:27:04

Camarada, muito bom o seu artigo, eu confesso que não sabia disso assim como a maioria da galera...

...
publicado por trambulhao - 2007-05-15 12:57:43

Eu também pensava dessa forma. Entre o CHAR e VARCHAR já sabia, mas sobre o INT só descobri a pouco tempo, por acaso. Precisando uma solução para ocupar com zero em INT(5) Tipo: 00001, 00002 em vez de: 1, 2... fui pesquisar o manual do MySql, aí que descobri também.

Muito bom o artigo!!

Bom artigo, mas tenho uma sugestão.
publicado por Pablo Dias - 2007-05-25 17:51:11

como disseste: "Se você utiliza uma coluna definida como INT(1) para servir como uma "flag" ... podem continuar"

eu acho que para definir uma coluna como "flag" que receberá apenas um valor, esta não é a melhor maneira, porque um campo INT requer 4 bytes para armazenar quaisquer valores dentro do range permitido.
se é pra armazenar somente um número, por exemplo, é melhor utilizar o TINYINT que requer somente 1 byte, além de ter um range (unsigned) de 0 a 255. o que vale também pra tabelas de poucos registros.
claro, tudo isso pensando em uma larga escala de dados. somando, somando.. podem chegar a megas de diferença, ao final.

CHAR(1) também pode ser utilizado como "flag", por necessitar de apenas 1 byte. o lado ruim: só vai aceitar de 0 a 9, enquanto, o lado bom: pode aceitar quaisquer caracteres, não somente numeros. ótimo para "i" (inativo) e "a" (ativo), que dão uma "humanizada" nas informações.

ps.: tem gente que defende o "set" e "enum". eu acho de extremo mau-gosto e também muita mão-de-obra cada vez que se deve adicionar uma opção.

no mais, ótimo artigo.
já tive essa dúvida sobre esses numerozinhos entre parenteses. haha

abraço,
Pablo Dias

bom...
publicado por Fernando dos Santos Amador - 2007-06-13 00:13:57

gostei do artigo...parabéns...

Publique os seus Comentários

Nome:
Email:
Título:
Comentário:

NOTA: Cadastre-se no site para poder publicar comentários.

 
webmaster: João Prado Maia   © 2000 - 2005 phpbrasil.com
Gerado em 2.427 segundos