MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Definir o conjunto de caracteres e o agrupamento de uma coluna no MariaDB


Você pode especificar o conjunto de caracteres e o agrupamento em vários níveis no MariaDB. Você pode especificá-los no nível da conexão, no nível do servidor, no nível do banco de dados, no nível da tabela e até mesmo no nível da coluna.

Você também pode especificar uma ordenação em suas consultas para que ela substitua qualquer ordenação que tenha sido especificada anteriormente nos níveis mencionados acima.

Para definir o conjunto de caracteres e o agrupamento no nível da coluna, use o comando CREATE TABLE instrução ou ALTER TABLE declaração (dependendo se você está criando a tabela ou modificando-a).

Ao criar a tabela


Aqui está um exemplo de configuração do agrupamento e do conjunto de caracteres em uma coluna ao criar a tabela:
CREATE TABLE Events ( 
    EventId INT AUTO_INCREMENT NOT NULL, 
    EventName VARCHAR(255)
        CHARACTER SET utf8
        COLLATE utf8_spanish_ci, 
    PRIMARY KEY (EventId)
    );

Aqui, especifiquei o conjunto de caracteres e o agrupamento no nível da coluna. Também é possível defini-los no nível da mesa.

Alterar uma coluna existente


Aqui está um exemplo de alteração do agrupamento e do conjunto de caracteres em uma coluna existente:
ALTER TABLE Events 
MODIFY EventName VARCHAR(255) 
CHARACTER SET latin5 COLLATE latin5_turkish_ci;

O EventName coluna agora usa o novo agrupamento e conjunto de caracteres.

Verifique a coluna


Existem várias maneiras de verificar o agrupamento e o conjunto de caracteres de uma coluna. Aqui está um:
SELECT
    column_name, 
    character_set_name, 
    collation_name 
FROM information_schema.columns
WHERE table_name = 'Events'
AND column_name = 'EventName';

Resultado:
+-------------+--------------------+-------------------+
| column_name | character_set_name | collation_name    |
+-------------+--------------------+-------------------+
| EventName   | latin5             | latin5_turkish_ci |
+-------------+--------------------+-------------------+

O agrupamento deve ser válido para o conjunto de caracteres


Ao definir o agrupamento e o conjunto de caracteres, você precisa garantir que o agrupamento seja válido para o conjunto de caracteres escolhido e vice-versa. Caso contrário, um erro é retornado.

Aqui está um exemplo de especificação usando um agrupamento inválido para o conjunto de caracteres especificado:
ALTER TABLE Events 
MODIFY EventName VARCHAR(255) 
CHARACTER SET utf16 COLLATE latin5_turkish_ci;

Resultado:
ERROR 1253 (42000): COLLATION 'latin5_turkish_ci' is not valid for CHARACTER SET 'utf16'

Ele nos diz que nosso agrupamento escolhido não é válido para nosso conjunto de caracteres especificado escolhido.

Consulte Lista completa de agrupamentos compatíveis com MariaDB ou Lista completa de conjuntos de caracteres compatíveis com MariaDB para obter uma lista de agrupamentos e conjuntos de caracteres correspondentes.

Especificando apenas o agrupamento ou conjunto de caracteres


Não há problema em especificar apenas o agrupamento ou apenas o conjunto de caracteres (ou nenhum):
  • Se apenas o conjunto de caracteres for fornecido, a ordenação padrão para esse conjunto de caracteres será usada.
  • Se apenas o agrupamento for fornecido, o conjunto de caracteres associado será usado.
  • Se nem a ordenação nem o conjunto de caracteres forem fornecidos, o padrão da tabela será usado.

Conversão para um conjunto de caracteres que requer mais bytes


Também é possível converter o conjunto de caracteres no nível da tabela. Ao converter o conjunto de caracteres no nível da tabela, há uma chance de que o MariaDB converta automaticamente o tipo de dados para um que seja mais capaz de lidar com o novo conjunto de caracteres.

No entanto, quando usamos MODIFY nas colunas individuais e especificamos explicitamente o tipo de dados (como fizemos nos exemplos anteriores), evitamos que o MariaDB converta o tipo de dados.

Conversão para binário


CONVERT TO CHARACTER SET binary converterá CHAR , VARCHAR e TEXT colunas para BINARY , VARBINARY e BLOB respectivamente.

Feito isso, essas colunas não terão mais um conjunto de caracteres. Além disso, eles não serão mais afetados por futuros CONVERT TO CHARACTER SET declarações.

Verificando o agrupamento e os conjuntos de caracteres no MariaDB


Existem várias maneiras de verificar o agrupamento e os conjuntos de caracteres no MariaDB, dependendo do nível que você está verificando (servidor, banco de dados, tabela, coluna, conexão, etc). Consulte Mostrar o agrupamento no MariaDB para obter exemplos.