Tipo de dados MySQL CHAR

Resumo : neste tutorial, você aprenderá sobre CHARo tipo de dados MySQL e como aplicá-lo no design da tabela do seu banco de dados.

CHARIntrodução ao tipo de dados MySQL

O CHARtipo de dados é um tipo de caractere de comprimento fixo no MySQL. Freqüentemente, você declara o CHARtipo 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 CHARtipo de dados. Você obterá um desempenho melhor em comparação com VARCHAReste gabinete.

O comprimento do CHARtipo de dados pode ser qualquer valor de 0 a 255. Quando você armazena um CHARvalor, o MySQL preenche seu valor com espaços até o comprimento que você declarou.

Quando você consulta o CHARvalor, 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 CHARcoluna.

CREATE TABLE mysql_char_test (
    status CHAR(3)
);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

O tipo de dados da  statuscoluna é CHAR. Pode conter até 3 caracteres.

Segundo, insira duas linhas na mysql_char_testtabela.

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 CHARvalor.

SELECT 
    status, 
    LENGTH(status)
FROM
    mysql_char_test;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
Exemplo de MySQL CHAR

Quarto, insira um CHARvalor 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 )
MySQL CHAR com espaços iniciais e finais

Comparando valores CHAR do MySQL

Ao armazenar ou comparar os CHARvalores, o MySQL usa o agrupamento do conjunto de caracteres atribuído à coluna.

O MySQL não considera espaços finais ao comparar CHARvalores 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 CHARvalores.

No exemplo anterior, armazenamos o valor Ycom 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 )
Consulta CHAR MySQL

MySQL CHARe UNIQUEíndice

Se a CHARcoluna 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 statuscoluna da mysql_char_testtabela.

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_testtabela.

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 CHARtipo de dados para armazenar dados de caracteres de comprimento fixo.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *