Char vs. Varchar

Char vs. Varchar
Os tipos de dados de char e varchar no SQL são os mais proeminentes, pois nos permitem armazenar dados de string.

Este tutorial analisará cada tipo de dados e descreve a diferença.

O tipo de char SQL

O tipo de char refere -se a um tipo de dados usado para armazenar seqüências de caracteres de um comprimento fixo.

O tipo de char permite especificar um tamanho específico para os dados que você inserir nessa linha.

Embora a implementação do tipo de char possa variar um pouco de acordo com o mecanismo de banco de dados, no SQL padrão, o tipo de char pode manter até um máximo de 8000 caracteres não unicode.

Para definir um comprimento de um tipo de char, você pode usar a sintaxe:

char (n)

Onde n se refere ao número (comprimento) dos caracteres que você pode armazenar.

Como o tipo de char é de comprimento fixo, se você inserir uma string com menos caracteres do que o tamanho especificado, a string será acolchoada com espaços extras para corresponder à string definida.

Da mesma forma, se você inserir uma sequência de maior comprimento que o tamanho do conjunto, a string será truncada no tamanho do conjunto.

Para ilustrar, comece criando um banco de dados de amostra:

Observe que, neste exemplo, usamos o PostgreSQL, mas você pode escolher qualquer sabor SQL.

$ psql -u postgres

Crie um banco de dados de amostra:

PostGres =# Criar banco de dados Sample_db;

Conecte -se ao banco de dados.

PostGres =# \ c sample_db

Crie uma tabela com duas linhas. O primeiro deve ser um ID com incremento automático (serial) e o outro do tipo de char.

Crie a tabela char_v_varchar (serial de id, full_name char (15))

Observe que o comprimento máximo da coluna Full_Name é 15.

Vamos agora adicionar alguns dados de amostra.

inserir em char_v_varchar (full_name) valores ('aaron wise'); - 10 caracteres
inserir em char_v_varchar (full_name) valores ('aaron wise jack'); - 15 caracteres
inserir em char_v_varchar (full_name) valores ('Aaron Wise outro nome blá blá'); - Mais de 15 caracteres

Preste atenção às três declarações de inserção. O primeiro insere um valor de 10 caracteres, o segundo agrega um valor de exatamente 15 caracteres, e o outro agrega um valor de caracteres maiores que 15.

O primeiro valor será preenchido com mais 5 caracteres espaciais para maximizar o comprimento definido se executarmos o código acima.

O segundo se encaixará perfeitamente, e o terceiro será truncado.

Adicionar um valor maior que o comprimento do conjunto é proibido em alguns mecanismos de banco de dados. Por exemplo, no PostgreSQL, a segunda instrução inserir falhará com um erro:

Erro: Valor muito longo para o tipo de caractere (15)
Estado SQL: 22001

Para verificar a duração dos registros, podemos executar a consulta:

Selecione Comprimento (Full_Name) de char_v_varchar;

O código acima deve retornar o comprimento de cada linha na tabela:

comprimento
--------
15
15
(2 linhas)

Observe que em alguns mecanismos de banco de dados pode permitir que você adicione um valor de comprimento menor sem preenchimento com espaços extras.

É bom lembrar que o tipo de char usa 1 byte para um caractere inserido.

O tipo SQL Varchar

Diferentemente do tipo de caractere de char, varchar ou variável, armazena seqüências de caracteres de comprimentos variados.

Isso significa que você pode definir o tamanho da coluna Varchar. No entanto, você pode adicionar valores de tamanho maior que ou menor que o comprimento definido.

Vamos dar um exemplo abaixo:

Criar tabela char_v_varchar (serial de id, full_name varchar);

Nesse caso, definimos uma tabela com a coluna de Varchar. Como o tamanho de Varchar pode variar, não precisamos definir um comprimento.

Podemos então inserir três valores de tamanho variável como:

inserir em char_v_varchar (full_name) valores ('aaron wise'); - 10 caracteres
inserir em char_v_varchar (full_name) valores ('aaron wise jack'); - 15 caracteres
inserir em char_v_varchar (full_name) valores ('Aaron Wise outro nome blá blá'); - Mais de 15 caracteres
Selecione Comprimento (Full_Name) de char_v_varchar;

O código acima deve inserir três registros e retornar o tamanho de cada.

Pensamentos finais

Isso então está na diferença entre um char e o tipo Varchar. Um char mantém seqüências de caracteres de tamanho fixo, enquanto um varchar mantém uma sequência de caracteres de comprimentos variados.

Embora o Varchar possa parecer aplicável para a maioria das situações, ele pode incorrer em acertos significativos se usados ​​de forma irracional. Portanto, se o desempenho for um fator crítico para o seu banco de dados, considere usar um char, a menos que seja necessário.