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

Definir o conjunto de caracteres e o agrupamento de uma tabela 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 tabela, 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 ao criar a tabela:
CREATE TABLE Products ( 
    ProductId CHAR(10), 
    ProductName VARCHAR(255) NOT NULL, 
    PRIMARY KEY (ProductId)) 
    CHARACTER SET latin1 
    COLLATE latin1_general_ci;

Isso cria uma tabela chamada Products com um latin1 conjunto de caracteres e um agrupamento de latin1_general_ci .

Alterar uma tabela existente


Aqui está um exemplo de alteração do agrupamento e do conjunto de caracteres em uma tabela existente:
ALTER TABLE Products 
CONVERT TO CHARACTER SET utf8 COLLATE utf8_spanish_ci;

Ele agora usa o novo agrupamento e conjunto de caracteres.

Também é possível omitir o CONVERT TO papel:
ALTER TABLE Products 
CHARACTER SET utf8 
COLLATE utf8_spanish_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 Products 
CHARACTER SET latin1 
COLLATE utf8_spanish_ci;

Resultado:
ERROR 1253 (42000): COLLATION 'utf8_spanish_ci' is not valid for CHARACTER SET 'latin1'

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


Para VARCHAR ou TEXT colunas, CONVERT TO CHARACTER SET altera o tipo de dados, se necessário, para garantir que a nova coluna seja longa o suficiente para armazenar tantos caracteres quanto a coluna original.

Por exemplo, um TEXT ascii coluna requer um único byte por caractere, portanto, a coluna pode conter até 65.535 caracteres. Se a coluna for convertida para utf8, até 3 bytes podem ser necessários para cada caractere, então a coluna será convertida para MEDIUMTEXT (que tem um comprimento máximo de 16.777.215) para que possa conter o mesmo número de caracteres.

Se você não quiser que essas alterações de tipo de dados ocorram, use MODIFY em vez disso, nas colunas individuais.

Por exemplo:
ALTER TABLE Products 
MODIFY ProductName VARCHAR(255) 
CHARACTER SET utf8; 

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.