Introduction
Se você está trabalhando com PostgreSQL, é importante ter um sólido entendimento dos diferentes tipos de dados para que você possa escolher os corretos ao criar suas tabelas de banco de dados. Dois tipos de caracteres comuns utilizados no PostgreSQL são os tipos TEXT e VARCHAR. Embora existam muitas semelhanças entre esses dois tipos, existem também algumas diferenças importantes. Neste artigo, vamos aprender mais sobre esses tipos de caracteres e comparar as diferenças entre Postgres VARCHAR vs TEXT.
Prerequisites
Antes de prosseguirmos com nossa comparação Postgres VARCHAR vs TEXT, vamos fazer uma pausa para rever alguns pré-requisitos que são necessários para seguir junto com os exemplos neste artigo:
- Confirmar que o servidor PostgreSQL foi corretamente instalado e configurado. O serviço precisa estar rodando em segundo plano.
Os usuários do Linux e Windows podem baixar o PostgreSQL aqui:
- Para iniciar o servidor PostgreSQL em um ambiente Linux, use o seguinte comando:
1
> |
sudo service postgresql start
|
- Você pode ver se o serviço está rodando com o comando mostrado abaixo:
1
> |
service postgresql status
|
A saída deste comando será parecida com a seguinte:
1
2 3 4 5 6 7 8 9 |
â— postgresql.service – PostgreSQL RDBMS
Loaded: carregado (/lib/systemd/systemd/postgresql.service; enabled; vendor prese Active: active (exted) since Thu 2019-08-01 14:51:20 PST; 36min ago Process: 1230 ExecStart=/bin/true (code=exited, status=0/SUCCESS) Main PID: 1230 (code=exited, status=0/SUCCESS) Aug 01 14:51:20 user-UX330UAK systemd: Iniciando o PostgreSQL RDBMS… Aug 01 14:51:20 systemd de usuário-UX330UAK: Iniciado o PostgreSQL RDBMS. linhas 1-8/8 (END) |
- Se você estiver trabalhando em uma máquina Windows, as seguintes instruções podem ser usadas para iniciar, parar e reiniciar o servidor PostgreSQL:
- Abrir Painel de Controle
- Abrir Ferramentas Administrativas
- Abrir Serviços
- Localizar o serviço PostgreSQL Server
- Finalmente, inicie, pare ou reinicie o serviço
Quais são os tipos de caracteres do PostgreSQL?
Existem três tipos de caracteres no PostgreSQL: character(n)
, que é comumente conhecido como char(n)
, character varying(n)
, que é comumente conhecido como varchar(n)
, e text
. O valor de n
deve ser um número inteiro positivo para estes tipos. Todos os tipos de caracteres PostgreSQL são capazes de armazenar strings até n caracteres.
Se você tentar armazenar uma string mais longa em uma coluna deste tipo de caractere PostgreSQL, você receberá um erro a menos que os caracteres que excedem o limite sejam compostos inteiramente de espaços. Se este for o caso, a string ou caracteres excedentes serão truncados até o comprimento máximo permitido.
O tipo de dados VARCHAR
comporta-se de forma similar ao tipo de dados TEXT
quando o valor de n não é especificado. A performance dos dois tipos de caracteres também é similar quando n é omitido.
Não parecido com outros bancos de dados, os tipos de caracteres PostgreSQL não têm diferença na performance entre eles. Na maioria das vezes, nós estaremos usando TEXT
ou VARCHAR
dependendo de nossas necessidades; nós usamos o VARCHAR(n)
quando queremos que o PostgreSQL execute a verificação de limites de comprimento.
Exemplos usando os tipos de caracteres PostgreSQL
Neste exemplo, nós continuaremos nossa comparação Postgres VARCHAR vs TEXT olhando mais de perto os tipos de caracteres e como eles funcionam em um banco de dados PostgreSQL.
Antes de podermos prosseguir com nossos exemplos, vamos precisar criar uma tabela:
1
2 3 4 5 |
CREATE TABLE pgsql_char_sample (
id serial PRIMARY KEY, my_char VARCHAR (8), my_text TEXT ); |
Após a criação da nossa tabela, podemos realizar uma operação de inserção:
1
2 3 4 5 6 |
INSERIR INTO pgsql_char_sample (my_char, my_text)
VALUES ( ‘Esta string de exemplo é para a coluna varchar’, ‘Esta string de exemplo é para a coluna de texto a ser inserida na tabela do PostgreSQL’ ); |
A afirmação mostrada acima resultará em um erro:
1
|
>
ERRO: VALOR demasiado longo para o tipo de varchar(8)
|
Este erro ocorre porque tentamos inserir uma string com mais de oito caracteres na coluna my_char
que tem um tipo de dados de varchar(8).
Tentemos inserir novamente dados de amostra, desta vez com valores diferentes:
1
2 3 4 5 6 |
INSERIR INTO pgsql_char_sample (my_char, my_text)
VALUES ( ‘String’, ‘Esta string de exemplo é para a coluna de texto a ser inserida na tabela do PostgreSQL’ ); |
Para verificar se a nossa operação de inserção foi bem sucedida, podemos usar a seguinte declaração:
1
|
>
SELECT * FROM pgsql_char_sample;
|
>O resultado deve ser algo parecido com isto:
1
2 3 4 |
id | my_char | my_text
—-+———+———————————————————————————- 1 | String | Esta string de amostra É PARA o texto COLUMN TO be inserted IN the PostgreSQL TABLE (1 ROW) |
No exemplo que vimos, podemos ver que a única diferença entre as colunas VARCHAR(n)
e TEXT
é que um limite pode ser colocado contra a coluna VARCHAR
. Neste caso, definimos a VARCHAR para um comprimento de oito caracteres, de modo que cordas de um comprimento maior não podem ser inseridas. Como mencionamos anteriormente, os tipos de caracteres VARCHAR e TEXT não têm diferenças observáveis na performance.
Conclusion
Quando você armazena dados de caracteres no PostgreSQL, é importante escolher o tipo de dados correto para cada coluna em sua tabela. Neste artigo, nós comparamos os tipos de caracteres Postgres VARCHAR vs TEXT, discutindo suas similaridades e diferenças básicas. Com as informações fornecidas neste artigo, você estará preparado para projetar suas próprias tabelas de banco de dados no PostgreSQL e escolher os tipos de dados corretos para suas necessidades.