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.

