Estou criando um formulário para enviar mensagens privadas e quero definir o maxlength
valor de uma área de texto apropriada ao tamanho máximo de um text
campo na minha tabela de banco de dados MySQL. Quantos caracteres um campo de texto de tipo pode armazenar?
Se muito, eu seria capaz de especificar o comprimento no campo de tipo de texto do banco de dados, como faria com varchar?
Respostas:
Consulte para números máximos: http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html
L é o número de bytes no seu campo de texto. Portanto, o número máximo de caracteres para o texto é 2 16 -1 (usando caracteres de byte único). Significa 65 535 caracteres (usando caracteres de byte único).
Codificação UTF-8 / MultiByte : usando a codificação MultiByte, cada caractere pode consumir mais de 1 byte de espaço. Para UTF-8, o consumo de espaço é de 1 a 4 bytes por caractere.
fonte
TINYTEXT: 256 bytes
TEXTO: 65.535 bytes
MEDIUMTEXT: 16.777.215 bytes
LONGTEXT: 4.294.967.295 bytes
fonte
Nota: Se estiver usando caracteres multibyte (como árabe, onde cada caractere árabe ocupa 2 bytes), a coluna "Comprimento Máximo Exato Permitido"
TINYTEXT
pode conter até 127 caracteres árabes (Nota: espaço, traço, sublinhado e outros caracteres , são caracteres de 1 byte).Basicamente, é como:
"Comprimento máximo exato permitido" = "Comprimento aproximado" em bytes - 1
fonte
De acordo com http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html , o limite é
L + 2 bytes, where L < 2^16
ou 64k.Você não precisa se preocupar em limitá-lo, ele é automaticamente dividido em pedaços que são adicionados à medida que a cadeia cresce, para que nem sempre use 64k às cegas.
fonte
De acordo com a documentação Você pode usar no máximo 21.844 caracteres se o conjunto de caracteres for UTF8
Você não precisa especificar o comprimento. Se você precisar de mais caracteres, use os tipos de dados MEDIUMTEXT ou LONGTEXT. Com o VARCHAR, o comprimento especificado não é para requisitos de armazenamento, é apenas para como os dados são recuperados da base de dados.
fonte
TINYTEXT
é um tipo de dados de cadeia que pode armazenar até255
caracteres.TEXT
é um tipo de dados de cadeia que pode armazenar até65,535
caracteres.TEXT
é comumente usado para artigos breves.LONGTEXT
é um tipo de dados de cadeia com um comprimento máximo de4,294,967,295
caracteres. UseLONGTEXT
se precisar armazenar texto grande, como um capítulo de um romance.fonte
TEXT
é um tipo de dados de cadeia que pode armazenar até 65.535 caracteres. Mas ainda assim, se você deseja armazenar mais dados, altere seu tipo de dados paraLONGTEXT
ALTER TABLE
name_tabel
CHANGEtext_field
LONGTEXT CHARACTER SETutf8
COLLATEutf8_general_ci
NOT NULL;fonte
Para o MySql versão 8.0.
Requisitos de armazenamento de tipo numérico
Os valores das colunas DECIMAL (e NUMERIC) são representados usando um formato binário que comporta nove dígitos decimais (base 10) em quatro bytes. O armazenamento para as partes inteiras e fracionárias de cada valor é determinado separadamente. Cada múltiplo de nove dígitos requer quatro bytes, e os dígitos "restantes" exigem uma fração de quatro bytes. O armazenamento necessário para dígitos em excesso é fornecido pela tabela a seguir.
Requisitos de armazenamento de tipo data e hora Para as colunas TIME, DATETIME e TIMESTAMP, o armazenamento necessário para as tabelas criadas antes do MySQL 5.6.4 difere das tabelas criadas a partir da 5.6.4 em diante. Isso ocorre devido a uma alteração na 5.6.4 que permite que esses tipos tenham uma parte fracionária, que requer de 0 a 3 bytes.
A partir do MySQL 5.6.4, o armazenamento para YEAR e DATE permanece inalterado. No entanto, TIME, DATETIME e TIMESTAMP são representados de maneira diferente. DATETIME é compactado com mais eficiência, exigindo 5 em vez de 8 bytes para a parte não fracionária, e as três partes têm uma parte fracionária que requer de 0 a 3 bytes, dependendo da precisão fracionada dos segundos dos valores armazenados.
Por exemplo, HORA (0), HORA (2), HORA (4) e HORA (6) usam 3, 4, 5 e 6 bytes, respectivamente. TIME e TIME (0) são equivalentes e requerem o mesmo armazenamento.
Para obter detalhes sobre representação interna de valores temporais, consulte Internos do MySQL: Algoritmos e Estruturas Importantes.
Requisitos de armazenamento do tipo de string Na tabela a seguir, M representa o comprimento da coluna declarada em caracteres para tipos de string não binários e bytes para tipos de string binários. L representa o comprimento real em bytes de um determinado valor de sequência.
fonte