Longitud máxima para texto tipo MySQL

Estoy creando un formulario para enviar mensajes privados y quiero establecer el valor maxlength de un área de texto apropiada para la longitud máxima de un campo de text 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 tipo de texto de la base de datos como lo haría con varchar?

Consulte los números máximos: http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html

 TINYBLOB, TINYTEXT L + 1 bytes, where L < 2^8 (255 Bytes) BLOB, TEXT L + 2 bytes, where L < 2^16 (64 Kibibytes) MEDIUMBLOB, MEDIUMTEXT L + 3 bytes, where L < 2^24 (16 Mebibytes) LONGBLOB, LONGTEXT L + 4 bytes, where L < 2^32 (4 Gibibytes) 

L es la cantidad 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 : al utilizar encoding 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.

TINYTEXT: 256 bytes
TEXTO: 65.535 bytes
MEDIUMTEXT: 16,777,215 bytes
LONGTEXT: 4,294,967,295 bytes

 Type | Approx. Length | Exact Max. Length Allowed ----------------------------------------------------------- TINYTEXT | 256 Bytes | 255 characters TEXT | 64 Kilobytes | 65,535 characters MEDIUMTEXT | 16 Megabytes | 16,777,215 characters LONGTEXT | 4 Gigabytes | 4,294,967,295 characters 

Nota: Si utiliza caracteres multibyte, la columna “Longitud máxima exacta permitida” tendrá una longitud diferente. Por ejemplo: si usa caracteres de 2 bytes, la longitud máxima exacta para TINYTEXT sería de 127 caracteres. Básicamente, es la cantidad de bytes permitidos -1.

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 divide automáticamente en fragmentos que se agregan a medida que la cuerda crece, por lo que no siempre usará a ciegas 64k.

¿Cuántos caracteres puede almacenar un campo de texto de tipo?

De acuerdo con la Documentación , puede usar un máximo de 21,844 caracteres si el juego de caracteres es UTF8

Si es mucho, ¿podría especificar la longitud en el campo tipo de texto db como lo haría con varchar?

No es necesario especificar la longitud. Si necesita más caracteres, utilice los tipos de datos MEDIUMTEXT o LONGTEXT. Con VARCHAR, la longitud específica no es para el requisito de almacenamiento, solo se refiere a cómo se recuperan los datos de la base de datos.

 TINYTEXT 256 bytes TEXT 65,535 bytes ~64kb MEDIUMTEXT 16,777,215 bytes ~16MB LONGTEXT 4,294,967,295 bytes ~4GB 

TINYTEXT es un tipo de datos de cadena que puede almacenar hasta 255 caracteres.

TEXT es un tipo de datos de cadena que puede almacenar hasta 65,535 caracteres. TEXT se usa comúnmente para artículos breves.

LONGTEXT es un tipo de datos de cadena con una longitud máxima de 4,294,967,295 caracteres. Use LONGTEXT si necesita almacenar texto grande, como un capítulo de una novela.

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 a LONGTEXT

ALTER TABLE name_tabel CAMBIAR text_field LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;

Para MySql versión 8.0.

Requisitos de almacenamiento de tipo numérico

 Data Type Storage Required TINYINT 1 byte SMALLINT 2 bytes MEDIUMINT 3 bytes INT, INTEGER 4 bytes BIGINT 8 bytes FLOAT(p) 4 bytes if 0 <= p <= 24, 8 bytes if 25 <= p <= 53 FLOAT 4 bytes DOUBLE, REAL 8 bytes DECIMAL(M,D), NUMERIC(M,D) Varies; see following discussion BIT(M) approximately (M+7)/8 bytes 

Los valores para las columnas DECIMAL (y NUMERIC) se representan utilizando un formato binario que empaqueta nueve dígitos decimales (base 10) en cuatro bytes. El almacenamiento para el entero y las partes fraccionarias de cada valor se determinan 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 dígitos en exceso viene dado por la siguiente tabla.

Tipo de fecha y hora Requisitos de almacenamiento 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 fraccionaria, que requiere de 0 a 3 bytes.

 Data Type Storage Required Before MySQL 5.6.4 Storage Required as of MySQL 5.6.4 YEAR 1 byte 1 byte DATE 3 bytes 3 bytes TIME 3 bytes 3 bytes + fractional seconds storage DATETIME 8 bytes 5 bytes + fractional seconds storage TIMESTAMP 4 bytes 4 bytes + fractional seconds storage 

A partir de MySQL 5.6.4, el almacenamiento para YEAR y DATE permanece sin cambios. Sin embargo, TIME, DATETIME y TIMESTAMP están representados de manera diferente. DATETIME se empaqueta de manera más eficiente, requiriendo 5 en lugar de 8 bytes para la parte no fraccionaria, y las tres partes tienen una parte fraccionaria que requiere de 0 a 3 bytes, dependiendo de la precisión de los segundos segundos fraccionarios de los valores almacenados.

 Fractional Seconds Precision Storage Required 0 0 bytes 1, 2 1 byte 3, 4 2 bytes 5, 6 3 bytes 

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 más información acerca de la representación interna de valores temporales, consulte MySQL Internals: Algoritmos y estructuras importantes.

Requisitos de almacenamiento de tipo 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 cadena binarios. L representa la longitud real en bytes de un valor de cadena dado.

 Data Type Storage Required CHAR(M) The compact family of InnoDB row formats optimize storage for variable-length character sets. See COMPACT Row Format Characteristics. Otherwise, M × w bytes, <= M <= 255, where w is the number of bytes required for the maximum-length character in the character set. BINARY(M) M bytes, 0 <= M <= 255 VARCHAR(M), VARBINARY(M) L + 1 bytes if column values require 0 − 255 bytes, L + 2 bytes if values may require more than 255 bytes TINYBLOB, TINYTEXT L + 1 bytes, where L < 28 BLOB, TEXT L + 2 bytes, where L < 216 MEDIUMBLOB, MEDIUMTEXT L + 3 bytes, where L < 224 LONGBLOB, LONGTEXT L + 4 bytes, where L < 232 ENUM('value1','value2',...) 1 or 2 bytes, depending on the number of enumeration values (65,535 values maximum) SET('value1','value2',...) 1, 2, 3, 4, or 8 bytes, depending on the number of set members (64 members maximum)