Estoy creando un formulario para enviar mensajes privados y quiero establecer el maxlength
valor de un área de texto apropiado para la longitud máxima de un text
campo en mi tabla de base de datos MySQL. ¿Cuántos caracteres puede almacenar un campo de texto de tipo?
Si es mucho, ¿podría especificar la longitud en el campo de tipo de texto de la base de datos como lo haría con varchar?
Respuestas:
Consulte los números máximos: http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html
L es el número de bytes en su campo de texto. Entonces, el número máximo de caracteres para el texto es 2 16 -1 (usando caracteres de un solo byte). Significa 65 535 caracteres (usando caracteres de un solo byte).
Codificación UTF-8 / MultiByte : utilizando la codificación MultiByte, cada carácter puede consumir más de 1 byte de espacio. Para UTF-8, el consumo de espacio es de 1 a 4 bytes por char.
fuente
TINYTEXT: 256 bytes
TEXT: 65,535 bytes
MEDIUMTEXT: 16,777,215 bytes
LONGTEXT: 4,294,967,295 bytes
fuente
Nota: Si usa caracteres multibyte (como el árabe, donde cada carácter árabe toma 2 bytes), la columna "Longitud máxima exacta permitida"
TINYTEXT
puede contener hasta 127 caracteres árabes (Nota: espacio, guión, guión bajo y otros caracteres similares , son caracteres de 1 byte).Básicamente, es como:
"Longitud máxima exacta permitida" = "Longitud aproximada" en bytes - 1
fuente
Según http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html , el límite es
L + 2 bytes, where L < 2^16
, o 64k.No debería preocuparse por limitarlo, se descompone automáticamente en trozos que se agregan a medida que crece la cadena, por lo que no siempre usará 64k a ciegas.
fuente
De acuerdo con la documentación Puede usar un máximo de 21,844 caracteres si el juego de caracteres es UTF8
No necesita especificar la longitud. Si necesita más caracteres, utilice los tipos de datos MEDIUMTEXT o LONGTEXT. Con VARCHAR, la longitud especificada no es para el requisito de almacenamiento, es solo para la forma en que los datos se recuperan de la base de datos.
fuente
TINYTEXT
es un tipo de datos de cadena que puede almacenar hasta255
caracteres.TEXT
es un tipo de datos de cadena que puede almacenar hasta65,535
caracteres.TEXT
se usa comúnmente para artículos breves.LONGTEXT
es un tipo de datos de cadena con una longitud máxima de4,294,967,295
caracteres. ÚseloLONGTEXT
si necesita almacenar texto grande, como un capítulo de una novela.fuente
TEXT
es un tipo de datos de cadena que puede almacenar hasta 65.535 caracteres. Pero aún así, si desea almacenar más datos, cambie su tipo de datos aLONGTEXT
ALTER TABLE
name_tabel
CHANGEtext_field
LONGTEXT CHARACTER SETutf8
COLLATEutf8_general_ci
NOT NULL;fuente
Para la versión 8.0 de MySql.
Requisitos de almacenamiento de tipo numérico
Los valores para las columnas DECIMAL (y NUMÉRICA) se representan utilizando un formato binario que incluye nueve dígitos decimales (base 10) en cuatro bytes. El almacenamiento para las partes enteras y fraccionarias de cada valor se determina por separado. Cada múltiplo de nueve dígitos requiere cuatro bytes, y los dígitos "sobrantes" requieren una fracción de cuatro bytes. El almacenamiento requerido para el exceso de dígitos viene dado por la siguiente tabla.
Requisitos de almacenamiento de tipo de fecha y hora Para las columnas TIME, DATETIME y TIMESTAMP, el almacenamiento requerido para las tablas creadas antes de MySQL 5.6.4 difiere de las tablas creadas a partir de 5.6.4. Esto se debe a un cambio en 5.6.4 que permite que estos tipos tengan una parte fraccional, que requiere de 0 a 3 bytes.
A partir de MySQL 5.6.4, el almacenamiento para AÑO y FECHA permanece sin cambios. Sin embargo, TIME, DATETIME y TIMESTAMP se representan de manera diferente. DATETIME se empaqueta de manera más eficiente, requiriendo 5 en lugar de 8 bytes para la parte no fraccional, y las tres partes tienen una parte fraccional que requiere de 0 a 3 bytes, dependiendo de la precisión de segundos fraccionados de los valores almacenados.
Por ejemplo, TIME (0), TIME (2), TIME (4) y TIME (6) usan 3, 4, 5 y 6 bytes, respectivamente. TIME y TIME (0) son equivalentes y requieren el mismo almacenamiento.
Para obtener detalles sobre la representación interna de los valores temporales, consulte MySQL Internals: algoritmos y estructuras importantes.
Requisitos de almacenamiento de tipo de cadena En la siguiente tabla, M representa la longitud de columna declarada en caracteres para tipos de cadena no binarios y bytes para tipos de cadenas binarias. L representa la longitud real en bytes de un valor de cadena dado.
fuente