[Meu] SQL VARCHAR Tamanho e Null-Termination
-
16-09-2019 - |
Pergunta
Disclaimer: Eu sou muito novo para SQL e bancos de dados em geral
. Eu preciso para criar um campo que irá armazenar um máximo de 32 caracteres de dados de texto. Faz "VARCHAR(32)
" significa que eu tenho exatamente 32 caracteres para os meus dados? Preciso reservar um caractere extra para nulo-rescisão?
I realizou um teste simples e parece que este é um tampão WYSIWYG. No entanto, eu queria ter uma resposta concreta de pessoas que realmente sabem o que estão fazendo.
Eu tenho um C fundo [++], pelo que esta questão é elevar o alarme na minha cabeça.
Solução
Sim, você tem 32 caracteres à sua disposição. SQL não preocupar-se com nul cordas terminados como algumas linguagens de programação fazer.
Outras dicas
Seu VARCHAR tamanho especificação é o tamanho máximo dos seus dados, portanto, neste caso, 32 caracteres. No entanto, VARCHARs são um campo dinâmico, de modo que o armazenamento físico real usado é apenas o tamanho de seus dados, além de um ou dois bytes.
Se você colocar uma seqüência de 10 caracteres em um VARCHAR (32), o armazenamento físico será 11 ou 12 bytes (o manual irá dizer-lhe a fórmula exata).
No entanto, quando o MySQL é lidar com conjuntos de resultados (ie., Após uma SELECT), 32 bytes serão alocados na memória para esse campo para cada registro.