Cada (tipo string de caracteres) coluna tem o seu próprio conjunto de caracteres e metadados de agrupamento.
Se, quando a coluna 's foi especificado (ou seja, quando foi criado ou alterado pela última vez), nenhum conjunto de caracteres/agrupamento foi fornecido explicitamente, então o conjunto de caracteres padrão da tabela e agrupamento seriam usados para a coluna.
Se, quando a tabela foi especificado, nenhum conjunto/agrupamento de caracteres padrão foi fornecido explicitamente, então o conjunto de caracteres padrão do banco de dados e o agrupamento seriam usados para o padrão da tabela.
Os comandos que você cita em sua pergunta apenas alteram esses conjuntos/agrupamentos de caracteres padrão para o banco de dados e a tabela, respectivamente. Em outras palavras, eles afetarão apenas as tabelas e colunas que forem criadas posteriormente - eles não afetam colunas (ou dados) existentes.
Para atualizar os dados existentes, você deve primeiro ler o Mudando o conjunto de caracteres seção da página de manual em
ALTER TABLE
:Para alterar apenas o padrão conjunto de caracteres para uma tabela, use esta instrução:
ALTER TABLE tbl_name DEFAULT CHARACTER SET charset_name;
A palavra
DEFAULT
é opcional. O conjunto de caracteres padrão é o conjunto de caracteres usado se você não especificar o conjunto de caracteres para colunas que adicionar a uma tabela posteriormente (por exemplo, com ALTER TABLE ... ADD column
). Quando o
foreign_key_checks
a variável do sistema estiver habilitada, que é a configuração padrão, a conversão do conjunto de caracteres não é permitida em tabelas que incluem uma coluna de cadeia de caracteres usada em uma restrição de chave estrangeira. A solução alternativa é desativar foreign_key_checks
antes de realizar a conversão do conjunto de caracteres. Você deve realizar a conversão em ambas as tabelas envolvidas na restrição de chave estrangeira antes de reativar foreign_key_checks
. Se você reativar foreign_key_checks
depois de converter apenas uma das tabelas, um ON DELETE CASCADE
ou ON UPDATE CASCADE
operação pode corromper dados na tabela de referência devido à conversão implícita que ocorre durante essas operações (Bug #45290, Bug #74816).