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.