Eu tenho uma pergunta geral sobre bancos de dados. Geralmente usamos o termo agrupamento com bancos de dados. Gostaria de saber como é diferente do conjunto de caracteres. Eu acho que agrupamento é um subconjunto de caracteres. Se for verdade, qual é o objetivo da intercalação múltipla em um conjunto de caracteres.
database
mysql
database-design
Shameer
fonte
fonte
Respostas:
Conjuntos de caracteres é uma lista de símbolos. Se você comparar ASCII com latin1 , com latin1 poderá escrever todas as palavras americanas porque latin1 contém todos os caracteres ASCII , suficientes para escrever qualquer palavra em inglês. Pelo contrário, com o ASCII, você não poderá escrever todas as palavras de idiomas específicos da Europa Ocidental, porque, por exemplo, caracteres como 'À', 'ë', 'õ', 'Ñ' estão ausentes.
Agrupar é sobre comparação entre caracteres. Ele define um conjunto de regras para comparar caracteres de um conjunto de caracteres.
No MySQL, agrupamentos são frequentemente relacionados a um idioma (por exemplo, 'latin1_swedish_ci', 'latin1_german1_ci', etc.). Quando você solicita uma consulta de seleção, uma palavra iniciada por 'ö' é colocada entre duas palavras iniciadas por 'o' e 'p' em alguns idiomas (com alguns agrupamentos). Porém, com outro agrupamento, esse personagem pode ser colocado completamente no final, o que torna a seleção resultante diferente.
fonte
Como resposta anterior, o conjunto de caracteres é um conjunto de caracteres (letras, números, ideogramas etc.) atribuídos a um número; para poder vê-los, você deve ter a fonte (as pequenas "figuras" que lemos). Eles eram importantes usando o LatinX, porque para cada X, o mesmo número (byte) poderia se referir a um caractere diferente.
Atualmente, é mais importante selecionar a codificação: o padrão é UTF-8, a representação de maior sucesso do Unicode (compatível com ASCII, mas tão flexível para incluir todos os idiomas, inclusive chinês e japonês) e o padrão W3C. Em outras palavras, inclui todos os conjuntos de caracteres.
Agrupamento: é uma palavra antiga, derivada do latim. Significa: compare uma cópia (manuscrito) com o original para encontrar diferenças (erros ou alterações). Era muito útil no passado, mas agora é quase um arcaismo, porque nossos documentos e livros são escritos usando computadores e a cópia é sempre idêntica ao original. Exemplo: em italiano (derivado do latim) existe o verbo "collazionare", mas está nos dicionários e ninguém o usa.
Portanto, o agrupamento define o comportamento dos operadores de comparação: =,>, <, <=,> = ...
É claro que esses operadores são usados para decidir se duas sequências são iguais ou se uma palavra é "maior" que outra, muito importante se quisermos ordenar. As letras não estão na mesma ordem para todos os idiomas; portanto, uma palavra pode ser maior que outra usando um agrupamento, mas não usando outro. Veja [1] para um exemplo prático.
os agrupamentos "bin" são os mais rigorosos: SELECT "b" = "B" => FALSE
os agrupamentos "ci" não diferenciam maiúsculas de minúsculas: SELECT "b" = "B" => TRUE
o "geral" tende a ignorar algumas diferenças: SELECT "a" = "à" => TRUE
outros são específicos para um ou mais idiomas. Exemplo "sueco" (não sei por que o sueco geralmente é um padrão)
Ainda estou procurando um site em que o comportamento de cada agrupamento seja descrito em detalhes ... esses exemplos se devem à minha experiência.
[1] http://www.olcot.co.uk/sql-blogs/revised-difference-between-collation-sql_latin1_general_cp1_ci_as-and-latin1_general_ci_as
fonte