Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O que o conjunto de caracteres e o agrupamento significam exatamente?


Do MySQL docs :

Um conjunto de caracteres é um conjunto de símbolos e codificações. Uma coleção é um conjunto de regras para comparar caracteres em um conjunto de caracteres. Vamos deixar clara a distinção com um exemplo de um conjunto de caracteres imaginário.

Suponha que temos um alfabeto com quatro letras:'A', 'B', 'a', 'b'. Damos a cada letra um número:'A' =0, 'B' =1, 'a' =2, 'b' =3. A letra 'A' é um símbolo, o número 0 é a codificação de 'A' e a combinação de todas as quatro letras e suas codificações é um conjunto de caracteres.

Agora, suponha que queremos comparar dois valores de string, 'A' e 'B'. A maneira mais simples de fazer isso é observar as codificações:0 para 'A' e 1 para 'B'. Como 0 é menor que 1, dizemos que 'A' é menor que 'B'. Agora, o que acabamos de fazer é aplicar um agrupamento ao nosso conjunto de caracteres. O agrupamento é um conjunto de regras (apenas uma regra neste caso):"compare as codificações". Chamamos esse mais simples de todos os agrupamentos de agrupamento binário.

Mas e se quisermos dizer que as letras minúsculas e maiúsculas são equivalentes? Então teríamos pelo menos duas regras:(1) tratar as letras minúsculas 'a' e 'b' como equivalentes a 'A' e 'B'; (2) então compare as codificações. Chamamos isso de agrupamento insensível a maiúsculas e minúsculas. É um pouco mais complexo do que um agrupamento binário.

Na vida real, a maioria dos conjuntos de caracteres tem muitos caracteres:não apenas 'A' e 'B', mas alfabetos inteiros, às vezes vários alfabetos ou sistemas de escrita orientais com milhares de caracteres, juntamente com muitos símbolos especiais e sinais de pontuação. Também na vida real, a maioria dos agrupamentos tem muitas regras:não apenas insensibilidade de maiúsculas e minúsculas, mas também insensibilidade de acento (um "acento" é uma marca anexada a um caractere como em alemão 'ö') e mapeamentos de múltiplos caracteres (como a regra de que 'ö' ='OE ' em uma das duas collations alemãs).