Los cuatro tipos TEXT son TINYTEXT, TEXT, MEDIUMTEXT, y LONGTEXT. Se corresponden a los cuatro tipos BLOB y tienen las mismas longitudes y requerimientos de almacenamiento, segun se muestra en la siguiente tabla
Tipo de columna | Almacenamiento requerido |
CHAR( | bytes, 0 <= 255 |
VARCHAR( | L +1 bytes, donde y 0 <= 255 |
BINARY( | bytes, 0 <= 255 |
VARBINARY( | L +1 bytes, donde y 0 <= 255 |
TINYBLOB , TINYTEXT | L +1 byte, donde L < 2^8 |
BLOB , TEXT | L +2 bytes, donde L < 2^16 |
MEDIUMBLOB , MEDIUMTEXT | L +3 bytes, donde L < 2^24 |
LONGBLOB , LONGTEXT | L +4 bytes, donde L < 2^32 |
Los tipos VARCHAR y BLOB y TEXT son de longitud variable. Para cada uno, los requerimientos de almacenamiento depende de la longitud de los valores de la (representados por L en la tabla precedente), en lugar que el tamaño máximo del tipo. Por ejemplo, una columna VARCHAR(10) puede tratar una cadena con una lengitud máxima de 10. El almacenamiento requerido real es la longitud de la cadena (L), más 1 byte para registrar la longitud de la cadena. Para la cadena 'abcd', L es 4 y el requerimiento de almacenamiento son 5 bytes.
Para los tipos CHAR, VARCHAR, y TEXT, los valores L y M en la tabla precedente debe interpretarse como números de caracteres en MySQL 5.0, y las longitudes para estos tipos en las especificaciones de la colmna indican el número de caracteres. Por ejemplo, para almacenar un valor TINYTEXT necesita L caracteres + 1 byte.
El motor NDBCLUSTER soporta sólo columnas de longitud fija. Esto significa que una columnaVARCHAR de una tabla en MySQL Cluster se comportará casi como si fuera de tipo CHAR (excepto que cada registro todavía tiene un byte extra). Por ejemplo, en una tabla Cluster, cada registro en una columna declarada como VARCHAR(100) necesitará 101 bytes para almacenamiento, sin tener en cuenta la longitud de la columna almacenada en cualquier registro.
Los tipos BLOB y TEXT requieren 1, 2, 3, o 4 bytes para almacenar la longitud de la columna, dependiendo de la longitud máxima posible del tipo.
Las columnas TEXT y BLOB se implementan de forma distinta en el motor de almacenamiento NDBCLUSTER , donde cada registro en una columna TEXT se compone de dos partes separadas. Una de estas es de longitud fija (256 bytes), y se almacena realmente en la tabla original. La otra consiste de cualquier dato de más de 256 bytes, que se almacena en una tabla oculta. Los registros en esta segunda tabla siempre tienen una longitud de 2,000 bytes . Esto significa que el tamaño de una columna TEXT es 256 si size <= 256 (donde size representa el tamaño del registro); de otro modo, el tamaño es 256 + size + (2000 - (size - 256) % 2000).
Las columnas BLOB se tratan como cadenas de caracteres binarias (de bytes). Las columnas TEXT se tratan como cadenas de caracteres no binarias (de carácateres). Las columnas BLOB no tienen conjunto de caracteres, y la ordenación y la comparación se basan en los valores numéricos de los bytes. Las columnas TEXT tienen un conjunto de caracteres y se ordenan y comparan en base de la colación del conjunto de caracteres asignada a la columna
No hay conversión de mayúsculas/minúsculas para columnas TEXT o BLOB durante el almacenamiento o la recuperación.
Si asiguna un valor a una columna BLOB o TEXT que exceda la longitud máxima del tipo de la columna, el valor se trunca. Si los caracteres truncados no son espacios, aparece una advertencia. Puede hacer que aparezca un error en lugar de una advertencia usando el modo SQL estricto.
En la mayoría de aspectos, puede tratar una columna BLOB como VARBINARY que puede ser tan grande como desee. Similarmente, puede tratar columnas TEXT como VARCHAR. BLOB y TEXT difieren de VARBINARY y VARCHARen los siguientes aspectos::
No se eliminan espacios al final para columnas BLOB y TEXT cuando los valores se almacenan o recuperan.
Tenga en cuenta que TEXT realiza comparación espacial extendida para coincidir con el objeto comparado, exactamente como CHAR y VARCHAR.
Para índices en columnas BLOB y TEXT, debe especificar una longitud de prefijo para el índice. Para CHAR yVARCHAR, la longitud de prefijo es opciona.
BLOB y TEXT no pueden tener valores DEFAULT .