Un conjunto de caracteres es un conjunto de símbolos y codificaciones. Una colación es un conjunto de reglas para comparar caracteres en un conjunto de caracteres. Vamos a dejar clara la distinción con un ejemplo de un conjunto de caracteres imaginario.
Supongamos que tenemos un alfabeto con cuatro letras:
'A
', 'B
',
'a
', 'b
'. Damos a cada letra
un número: 'A
' = 0, 'B
' =
1, 'a
' = 2, 'b
' = 3. La
letra 'A
' es un símbolo, el número 0 es la
codificación para
'A
', y la combinación de las cuatro letras y
sus codificaciones es un conjunto de
caracteres.
Suponga que queremos comparar dos cadenas de caracteres,
'A
' y 'B
'. La forma más
fácil de hacerlo es mirar las codificaciones: 0 para
'A
' y 1 para 'B
'. Ya que 0
es menor a 1, decimos que 'A
' es menor que
'B
'. Lo que acabamos de hacer es aplicar una
colación a un conjunto de caracteres. La colación es un conjunto
de reglas (sólo una en este caso): “compara las
codificaciones”. LLamamos a la más sencilla de todas las
colaciones una colación binaria.
Pero, ¿qué pasa si queremos decir que las letras en mayúsculas
y minúsculas son equivalentes? Entonces tendríamos como mínimo
dos reglas: (1) tratar las letras minúsuclas
'a
' y 'b
' como equivalentes
a 'A
' y 'B
'; (2) luego
comparar las codificaciones. Llamamos a esto una colación
no sensible a mayúsuculas y minúsculas
(case-insensitive). Es un poco más compleja que una
colación binaria.
En el mundo real, la mayoría de conjuntos de caracteres tienen
varios caracteres: no sólo 'A
' y
'B
' sino alfabetos completos, a veces varios
alfabetos o sistemas de escritura orientales con miles de
caracteres, junto con muchos símbolos especiales y signos de
puntuación. También en el mundo real, la mayoría de colaciones
tienen muchas reglas: no sólo distinción entre mayúsculas y
minúsculas, sino también sensibilidad a tildes (una
“tilde” es una marca añadida a un carácter como en
alemán 'Ö
') y mapeos de múltiples caracteres
(tales com la regla que 'Ö
' =
'OE
' en una de las dos colaciones alemanas).
MySQL 5.0 puede hacer lo siguiente:
Guardar cadenas de caracteres usando una variedad de conjuntos de caracteres
Comparar cadenas de caracteres usando una variedad de colaciones
Mezclar cadenas de caracteres con distintos conjuntos de caracteres o colaciones en el mismo servidor, la misma base de datos, o incluso la misma tabla
Permitir la especificación de un conjunto de caracteres y una colación en cualquier nivel
En este aspecto, no sólo MySQL 5.0 es mucho más flexible que versiones anteriores de MySQL, sino mejor que otros SGBDs. Sin embargo, para usar estas características de forma correcta, necesita saber qué conjuntos de caracteres y colaciones están disponibles, cómo cambiar los valores por defecto, y cómo afectan al comportamiento de operadores de cadenas de caracteres y funciones.
É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.