Os conjuntos de caracteres e agrupamentos do MySQL podem ser interpretados como uma lista de cima para baixo de itens priorizados. A mais alta é a menos prioritária e a mais baixa é a mais prioritária.
Ordem de precedência com a mais alta sendo a menor precedência:
- Agrupamento de servidores
- Agrupamento específico da conexão
- Agrupamento de banco de dados
- Agrupamento de tabelas
- Agrupamento de colunas
- Agrupamento de consultas (usando
CAST
ouCONVERT
)
O agrupamento de servidores é definido pelo servidor, que é definido dentro de
my.cnf
ou quando o servidor foi construído a partir do código-fonte. Por padrão, geralmente será latin1
ou utf8
, dependendo da sua plataforma. O agrupamento específico da conexão é definido pelo cliente usando uma consulta como
SET NAMES 'utf8' COLLATE 'utf8_unicode_ci';
. A maioria dos clientes não define um agrupamento específico de conexão, portanto, o servidor usará seu próprio padrão, conforme explicado acima. O agrupamento de banco de dados é definido durante a criação do banco de dados ou manualmente, atualizando-o posteriormente. Se você não especificar um, ele usará o próximo agrupamento de nível superior, que seria o específico da conexão ou o agrupamento do servidor.
O agrupamento de tabelas é o mesmo que o agrupamento do banco de dados, exceto se deixado em branco, ele usará o banco de dados como padrão, depois específico da conexão e, finalmente, o agrupamento do servidor.
O agrupamento de colunas usa o agrupamento da tabela como seu padrão e, se não houver nenhum agrupamento definido, ele seguirá a cadeia para encontrar um agrupamento a ser usado, parando no servidor se todos os outros não estiverem configurados.
O agrupamento de consultas é especificado na consulta usando
CAST
ou CONVERT
, mas, caso contrário, usará o próximo agrupamento disponível na cadeia. Não há como definir isso a menos que você use uma função. Consulte também a página de manual Suporte a conjunto de caracteres .