Un resumen de los tipos de columnas de cadenas de caracteres se muestra a continuación. Para información adicional, consulte Sección 11.4, “Tipos de cadenas de caracteres”. Los requerimientos de almacenamiento de estas columnas se dan en Sección 11.5, “Requisitos de almacenamiento según el tipo de columna”.
En algunos casos, MySQL puede cambiar una columna de cadena de
caracteres a un tipo diferente para un comando CREATE
TABLE
o ALTER TABLE
. Consulte
Sección 13.1.5.1, “Cambios tácitos en la especificación de columnas”.
Los tipos de cadenas de caracteres MySQL 5.0 incluyen algunas características que puede que no haya encontrado trabajando con versiones anteriores de MySQL anteriores a la 4.1:
Las definiciones de columnas para varios tipos de datos de
cadenas de caracteres incluyen un atributo
CHARACTER SET
para especificar el
conjunto de caracteres y, ocasionalmente, una colación.
(CHARSET
es sinónimo de
CHARACTER SET
.) Estos atributos se
aplican a los tipos CHAR
,
VARCHAR
, TEXT
,
ENUM
, y SET
. Por
ejemplo:
CREATE TABLE t ( c1 CHAR(20) CHARACTER SET utf8, c2 CHAR(20) CHARACTER SET latin1 COLLATE latin1_bin );
Esta definición de tabla crea una columna llamada
c1
que tiene un conjunto de caracteres
utf8
con la colación por defecto para
ese conjunto de caracteres, y una columna llamada
c2
que tiene el conjunto de caracteres
latin1
y la colación binaria para el
conjunto de caracteres. La colación binaria no es sensible
a mayúsculas.
MySQL 5.0 interpreta las especificaciones de longitud en las definiciones de las columnas en unidades de caracteres . (En algunas versiones anteriores de MySQL la longitud se interpreta en bytes.)
Para los tipos CHAR
,
VARCHAR
, y the TEXT
,
el atributo BINARY
hace que se asigne a
la columna la colación binaria del conjunto de caracteres.
Las ordenaciones y comparaciones de las columnas de tipo
carácter se basan en el conjunto de caracteres asignado a
la columna. Para versiones anteriores, la comparación y
ordenación se basan en la colación del conjunto de
caracteres del servidor. Para columnas
CHAR
y VARCHAR
, puede
declarar que la columna con el atributo
BINARY
realice la ordenación y la
comparación usando los códigos de los valores subyacentes
en lugar del orden léxico.
Para más información acerca del soporte de conjuntos de caracteres en MySQL 5.0, consulte Capítulo 10, Soporte de conjuntos de caracteres.
[NATIONAL] CHAR(
M
)
[BINARY | ASCII | UNICODE]
Una cadena de caracteres de longitud fija que siempre tiene
el número necesario de espacios a la derecha para ajustarla
a la longitud especificada al almacenarla.
M
representa la longitud de la
columna. El rango de M
en MySQL
5.0 es de 0 a 255 caracteres.
Nota: Los espacios a la
derecha se borran cuando se obtiene los valores
CHAR
.
Antes de MySQL 5.0.3, una columna CHAR
con una longitud especificada mayor que 255 se convierte al
tipo TEXT
más pequeño que pueda tener
los valores de la longitud dada. Por ejemplo,
CHAR(500)
se convierte a
TEXT
, y CHAR(200000)
se convierte en MEDIUMTEXT
. Esta es una
característica de compatibilidad. Sin embargo, esta
conversión causa que la columna tenga longitud variable, y
también afecta a la eliminación de espacios.
CHAR
es una abreviatura para
CHARACTER
. NATIONAL
CHAR
(o su forma equivalente de,
NCHAR
) es la forma estándar de SQL de
definir que una columna CHAR
debe usar el
conjunto de caracteres por defecto. Este es el
comportamiento por defecto en MySQL.
El atributo BINARY
es una abreviatura
para especificar la colación binaria del conjunto de
caracteres de la columna. La ordenación y comparación se
basa en los valores numéricos de los caracteres.
El tipo de columna CHAR BYTE
es un alias
para CHAR BINARY
. Esta es una
característica de compatibilidad.
El atributo ASCII
puede especificarse
para CHAR
. Asigna el conjunto de
caracteres latin1
.
El atributo UNICODE
puede especificarse
en MySQL 5.0 para CHAR
. Asigna el
conjunto de caracteres ucs2
.
MySQL le permite crear un tipo de columna
CHAR(0)
. Esto es útil cuando tiene que
cumplir con las especificaciones de alguna aplicación vieja
que dependa de la existencia de una columna pero que no usa
realmente el valor. Esto es también útil cuando necesita
una columna que sólo pueda tener dos valores: Una columna
CHAR(0)
que no esté definido como
NOT NULL
ocupa sólo un bit y sólo puede
tener dos valores NULL
y
''
(la cadena de caracteres vacía).
CHAR
Es un sinónimo de CHAR(1)
.
[NATIONAL] VARCHAR(
M
)
[BINARY]
Cadena de caracteres de longitud variable.
M
representa la longitud de
columna máxima. En MySQL 5.0, el rango de
M
es de 0 a 255 antes de MySQL
5.0.3, y de 0 a 65,535 en MySQL 5.0.3 y posterior. (La
longitud máxima real de un VARCHAR
en
MySQL 5.0 se determina por el tamaño de registro máximo y
el conjunto de caracteres que use. La longitud máxima
efectiva desde MySQL 5.0.3 es de 65,532
bytes.)
Nota: Antes de 5.0.3, los
espacios finales se eliminaban cuando se almacenaban los
valores VARCHAR
, lo que difiere de le
especificación estándar de SQL.
Previo a MySQL 5.0.3, una columna VARCHAR
con una longitud especificada mayor a 255 se convertía al
valor de tipo TEXT
más pequeño que
podía soportar el valor de la longitu dada. Por ejemplo,
VARCHAR(500)
se convertía a
TEXT
, y
VARCHAR(200000)
se convertía a
MEDIUMTEXT
. Esto era una cuestión de
compatibilidad. Sin embargo, esta conversión afectaba la
eliminación de espacios finales.
VARCHAR
es la abreviación de
CHARACTER VARYING
.
En MySQL 5.0, el atributo BINARY
es
abreviatura para especificar la colación binaria del
conjunto de caracteres de la columna. La ordenación y la
comparación se basa en los valores numéricos de los
caracteres.
Desde MySQL 5.0.3, VARCHAR
se guarda con
un prefijo de longitud de uno o dos bytes + datos. La
longitud del prefijo es de dos bytes si la columna
VARCHAR
se declara con una longitud mayor
a 255.
BINARY(
M
)
El tipo BINARY
es similar al tipo
CHAR
, pero almacena cadenas de datos
binarios en lugar de cadenas de caracteres no binarias.
VARBINARY(
M
)
El tipo VARBINARY
es similar al tipo
VARCHAR
, pero almacena cadenas de
caracteres binarias en lugar de cadenas de caracteres no
binarias.
TINYBLOB
Una columna BLOB
con una longitud máxima
de 255 (2^8 - 1) bytes.
TINYTEXT
Una columna TEXT
con longitud máxima de
255 (2^8 - 1) caracteres.
BLOB[(
M
)]
Una columna BLOB
con longitud máxima de
65,535 (2^16 - 1) bytes.
Una longitud opcional M
puede
darse para este tipo en MySQL 5.0. Si se hace, MySQL creará
las columnas como el tipo BLOB
de tamaño
mínimo para tratar los valores de
M
bytes.
TEXT[(
M
)]
Una columna TEXT
con longitud máxima de
65,535 (2^16 - 1) caracteres.
En MySQL 5.0, se puede dar una longitud opcional
M
. En ese caso MySQL creará las
columnas con el tipo TEXT
de longitud
mínima para almacenar los valors de longitud
M
.
MEDIUMBLOB
Una columna BLOB
con longitud de
16,777,215 (2^24 - 1) bytes.
MEDIUMTEXT
Una columna TEXT
con longitud máxima de
16,777,215 (2^24 - 1) caracteres.
LONGBLOB
Una columna BLOB
con longitud máxima de
4,294,967,295 o 4GB (2^32 - 1) bytes. La longitud máxima
efectiva (permitida) de las columnas
LONGBLOB
depende del tamaño máximo
configurado para los paquetes en el protocolo
cliente/servidor y la memoria disponible.
LONGTEXT
Una columna TEXT
con longitud máxima de
4,294,967,295 or 4GB (2^32 - 1) caracteres. La longitud
máxima efectiva (permitida) de
columnas LONGTEXT
depende del tamaño
máximo de paquete configurado en el protocolo
cliente/servidor y la memoria disponible.
ENUM('
value1
','value2
',...)
Una enumeración. Un objeto de cadena de caracteres que
sólo puede tener un valor, elegido de una lista de valores
'
,
value1
''
,
value2
'...
, NULL
o el valor
de error especial ''
. Una columna
ENUM
puede tener un máximo de 65,535
valores distintos. Los valores ENUM
se
representan internamente como enteros.
SET('
value1
','value2
',...)
Un conjunto. Un objeto de cadena de caracteres que puede
tener cero o más valores que deben pertencer a la lista de
valores
'
,
value1
''
,
value2
'...
Una columna SET
puede tener un máximo de 64 miembros. Los valores
SET
se representan internamente como
enteros.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.