Toda conexão tem o seu conjunto de caracteres e collation, que não podem ser nulos. Esistem atualmente dois conjuntos de caracteres de conexão, que chamamos ``connection/literals'' e ``connection/results'' quando é necessário distingui-los.
Considere o que é uma ``conexão'': é o que você faz quando conecta ao servidor. O cliente envia instruções SQL, como consultas, pela conexão com o sevidor. O servidor envia respostas, como resultados, pela conexão de volta para o cliente. Isto leva a diversas questões, tal como: (a) em qual conjunto de caracteres está uma consulta quando ela deixa o cliente? (b) em qual conjunto de caracteres o servidor deve traduzir uma consulta após recebê-la? (c) para qual conjunto de caracteres o servidor deve traduzir antes de enviar o resultado ou mensagem de erros de volta para o cliente? Você pode fazer um ajuste fino das configurações para isto, ou você pode depender dos padrões (neste caso, você pode ignorar esta seção).
Existem suas instruções que afetam o conjunto de caracteres da conexão:
SET NAMES character_set_name SET CHARACTER SET character_set_name
        SET NAMES indica o que está na instrução
        SQL que o cliente envia. Assim, SET NAMES
        cp1251diz ao servidor que ``futuras mensagens vindas
        do cliente estarão no conjunto de caracteres
        cp1251'' e o servidor está livre para
        traduzir para seu próprio conjunto de caracteres, se
        apropriado.
      
        SET CHARACTER SET indica o que está na
        instrução SQL que o cliente envia, e também o que está no
        resultado que o servidor envia de volta para o cliente. Assim,
        SET CHARACTER SET inclui SET
        NAMES, e também especifica qual conjunto de
        caracteres o valor da coluna terá se, por exempo, você usar
        uma instrução SELECT.
      
        EXEMPLO: Suponha que column1 é definido como
        CHAR(5) CHARACTER SET latin2. Se você não
        utilizar SET CHARACTER SET, então para
        SELECT column1 FROM t o servidor enviará de
        volta todos os valores para column1 usando o
        conjunto de caracteres latin2. Se por outro
        lado você usar SET CHARACTER SET latin1
        então o servidor, antes de enviar de volta, converterá os
        valores latin2 para
        latin1. Tal conversão é lenta e poder ter
        perdas.
      
        Quando você executa SET NAMES ou
        SET CHARACTER SET, você também está
        alterando a ``collation da conexão''. No entanto a collation da
        conexão existe apenas para consistência. Normalmente o seu
        valor não importa.
      
        Com o cliente mysql, não é necessário
        executar SET NAMES todas as vezes que você
        inicá-lo. Você pode adicionar a opção
        --default-character-set-name a sua linha de
        instrução do mysql, ou em seu arquivo de
        opção. Por exemplo, a seguinte configuração do arquivo de
        opção irá alterar o conjunto de caracteres da conexão cada
        vez que você executar mysql:
      
[mysql] default-character-set-name=character_set_name
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

