titulo - Longitud máxima para texto tipo MySQL
meta tags ejemplos (8)
Estoy creando un formulario para enviar mensajes privados y quiero establecer el valor de longitud máxima de un área de text
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 texto?
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?
¿Cuántos caracteres puede almacenar un campo de texto de texto?
Según la Documentation , puede utilizar un máximo de 21,844 caracteres si el conjunto de caracteres es UTF8
Si fuera mucho, ¿podría especificar la longitud en el campo de tipo de texto db como lo haría con varchar?
No necesitas 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, es solo para la forma en que los datos se recuperan 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 utiliza 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.
Consulte los números máximos en: 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 Kilobytes)
MEDIUMBLOB, MEDIUMTEXT L + 3 bytes, where L < 2^24 (16 Megabytes)
LONGBLOB, LONGTEXT L + 4 bytes, where L < 2^32 (4 Gigabytes)
L es el número de bytes en su campo de texto. Por lo tanto, el número máximo de caracteres para el texto es 2 16 -1 (usando caracteres de un solo byte). Significa 65 535 caracteres (utilizando caracteres de un solo byte).
Codificación UTF-8 / MultiByte : al usar 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.
Para la versión 8.0 de MySql.
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 NUMÉRICAS) se representan mediante un formato binario que contiene 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 los dígitos en exceso viene dado por la siguiente tabla.
Requisitos de almacenamiento del 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 la 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 de YEAR y DATE 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 fraccionaria que requiere de 0 a 3 bytes, dependiendo de la precisión fraccional de segundos 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) utilizan 3, 4, 5 y 6 bytes, respectivamente. TIEMPO y TIEMPO (0) son equivalentes y requieren el mismo almacenamiento.
Para obtener detalles sobre la representación interna de valores temporales, vea MySQL Internals: Important Algorithms and Structures.
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 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)
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ías preocuparte por limitarlo, se divide automáticamente en trozos que se agregan a medida que la cadena crece, por lo que no siempre usarás 64k a ciegas.
TINYTEXT: 256 bytes
Texto: 65,535 bytes.
MEDIUMTEXT: 16,777,215 bytes.
LONGTEXT: 4,294,967,295 bytes
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
CHANGE text_field
LONGTEXT CHARACTER SET utf8
COLLATE utf8_general_ci
NOT NULL;
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 de varios bytes (como las letras árabes en las que cada carácter toma 2 bytes), la columna "Longitud exacta máxima permitida" tendrá una longitud diferente. Por ejemplo: si usa caracteres de 2 bytes, la longitud máxima exacta de TINYTEXT
sería 127 caracteres. Básicamente, es el número de bytes permitidos -1.