Tipos de datos de cadena

El tipo de datos de cadena es el más utilizado. Gracias a él, la base de datos almacena tanto texto como distintos datos binarios (por ejemplo, imágenes).

En MySQL está representado por los siguientes tipos:

CHAR y VARCHAR

TipoDescripciónRango de caracteres
CHAR(X)Contiene cadenas de texto. La longitud es fija y la indicas al declarar la columna. Si la cadena es más corta que la longitud indicada, se rellena con espacios a la derecha hasta alcanzarla.Longitud entre 0 y 255
VARCHAR(X)Contiene cadenas de texto. La longitud de las cadenas es dinámica.Longitud entre 0 y 65.535

BINARY y VARBINARY

Los tipos de datos BINARY y VARBINARY son análogos a CHAR y VARCHAR, pero almacenan cadenas binarias.

TipoDescripciónRango de caracteres
BINARY(X)Contiene cadenas binarias. La longitud es fija y la indicas al declarar la columna.Longitud entre 0 y 255
VARBINARY(X)Contiene cadenas binarias. La longitud de las cadenas es dinámica.Longitud entre 0 y 65.535

BLOB y TEXT

BLOB se usa para almacenar datos binarios de gran tamaño, como imágenes. TEXT también sirve para almacenar grandes volúmenes de datos, pero de contenido textual.

La diferencia entre ellos es que, en BLOB, la ordenación y la comparación de los datos almacenados distinguen entre mayúsculas y minúsculas, mientras que en las columnas TEXT no.

TipoDescripciónRango de caracteres
BLOBContiene cadenas binarias.Longitud máxima 65.535
TEXTContiene cadenas de texto.Longitud máxima 65.535

BLOB y TEXT tienen subtipos adicionales que se diferencian en el tamaño máximo de datos que pueden almacenar.

TipoRango de caracteres
TINYBLOBLongitud máxima 255
MEDIUMBLOBLongitud máxima 16.777.215
LONGBLOBLongitud máxima 4.294.967.295
TINYTEXTLongitud máxima 255
MEDIUMTEXTLongitud máxima 16.777.215
LONGTEXTLongitud máxima 4.294.967.295

En PostgreSQL está representado por los siguientes tipos:

CHARACTER y VARCHAR

TipoDescripciónRango de caracteres
CHAR(n)Contiene cadenas de texto de longitud fija. Se rellena con espacios hasta la longitud indicada.Longitud entre 1 y 10.485.760
VARCHAR(n)Contiene cadenas de texto de longitud variable con un límite.Longitud entre 1 y 10.485.760
TEXTContiene cadenas de texto de longitud variable ilimitada.Longitud prácticamente ilimitada (hasta 1 GB)

Conviene saber que en PostgreSQL es preferible usar el tipo TEXT en lugar de VARCHAR sin límite de longitud, ya que ambos tienen el mismo rendimiento.