Resumo : neste tutorial, você aprenderá sobre CHAR
o tipo de dados MySQL e como aplicá-lo no design da tabela do seu banco de dados.
CHAR
Introdução ao tipo de dados MySQL
O CHAR
tipo de dados é um tipo de caractere de comprimento fixo no MySQL. Freqüentemente, você declara o CHAR
tipo com um comprimento que especifica o número máximo de caracteres que deseja armazenar. Por exemplo, CHAR(20)
pode conter até 20 caracteres.
Se os dados que você deseja armazenar tiverem tamanho fixo, você deverá usar o CHAR
tipo de dados. Você obterá um desempenho melhor em comparação com VARCHAR
este gabinete.
O comprimento do CHAR
tipo de dados pode ser qualquer valor de 0 a 255. Quando você armazena um CHAR
valor, o MySQL preenche seu valor com espaços até o comprimento que você declarou.
Quando você consulta o CHAR
valor, o MySQL remove os espaços finais.
Observe que o MySQL não removerá os espaços finais se você ativar o modo SQL PAD_CHAR_TO_FULL_LENGTH .
Considere o seguinte exemplo.
Primeiro, crie uma tabela com uma CHAR
coluna.
CREATE TABLE mysql_char_test (
status CHAR(3)
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
O tipo de dados da status
coluna é CHAR
. Pode conter até 3 caracteres.
Segundo, insira duas linhas na mysql_char_test
tabela.
INSERT INTO mysql_char_test(status)
VALUES('Yes'),('No');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Terceiro, use a função length para obter o comprimento de cada CHAR
valor.
SELECT
status,
LENGTH(status)
FROM
mysql_char_test;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Quarto, insira um CHAR
valor com espaços à esquerda e à direita.
INSERT INTO mysql_char_test(status)
VALUES(' Y ');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Por fim, consulte os valores inseridos e você verá que o MySQL remove os espaços finais.
SELECT
status,
LENGTH(status)
FROM
mysql_char_test;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Comparando valores CHAR do MySQL
Ao armazenar ou comparar os CHAR
valores, o MySQL usa o agrupamento do conjunto de caracteres atribuído à coluna.
O MySQL não considera espaços finais ao comparar CHAR
valores usando o operador de comparação como =, <>, >, <, etc.
Observe que o LIKE
operador considera os espaços finais quando você faz a correspondência de padrões com CHAR
valores.
No exemplo anterior, armazenamos o valor Y
com espaços à esquerda e à direita. No entanto, quando executamos a seguinte consulta:
SELECT *
FROM mysql_char_test
WHERE status = 'Y';
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
O MySQL não retorna nenhuma linha porque não considera o espaço final. Para combinar com o ‘Y’, precisamos remover o espaço à direita da seguinte forma:
SELECT *
FROM mysql_char_test
WHERE status = ' Y';
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
MySQL CHAR
e UNIQUE
índice
Se a CHAR
coluna tiver um UNIQUE
índice e você inserir um valor diferente de um valor existente em vários espaços à direita, o MySQL rejeitará as alterações devido a um erro de chave duplicada.
Veja o exemplo a seguir.
Primeiro, crie um índice exclusivo para a status
coluna da mysql_char_test
tabela.
CREATE UNIQUE INDEX uidx_status
ON mysql_char_test(status);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Segundo, insira uma nova linha na mysql_char_test
tabela.
INSERT INTO mysql_char_test(status)
VALUES('N');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Terceiro, inserir o seguinte valor causará um erro de chave duplicada.
INSERT INTO mysql_char_test(status)
VALUES('N ');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Error Code: 1062. Duplicate entry 'N' for key 'uidx_status'
Linguagem de código: JavaScript ( javascript )
Resumo
- O tipo de dados MySQL
CHAR
é um tipo de caractere de comprimento fixo. - Use o
CHAR
tipo de dados para armazenar dados de caracteres de comprimento fixo.