Resumo: neste tutorial, você aprenderá sobre os tipos de dados de caracteres PostgreSQL incluindo CHAR
, VARCHAR
, e TEXT
, e aprenderá como selecionar os tipos de caracteres certos para suas tabelas.
Introdução aos tipos de caracteres PostgreSQL
PostgreSQL fornece três tipos de caracteres primários: CHARACTER(n)
ou CHAR(n)
, CHARACTER VARYINGING(n)
ou VARCHAR(n)
, e TEXT
, onde n
é um número inteiro positivo.
A tabela a seguir ilustra mal os tipos de caracteres no PostgreSQL:
Tipos de caracteres | Descrição |
CHARACTER VARYING(n) , VARCHAR(n) |
comprimento variável com limite de comprimento |
CHARACTER(n) , CHAR(n) |
comprimento fixo, almofadado em branco |
TEXT , VARCHAR |
comprimento variável ilimitado |
ambos CHAR(n)
e VARCHAR(n)
podem armazenar até n
caracteres. Se você tentar armazenar uma string que tenha mais de n
caracteres, o PostgreSQL irá emitir um erro.
No entanto, uma exceção é que se os caracteres em excesso são todos os espaços, o PostgreSQL truncata os espaços até o comprimento máximo (n
) e armazena os caracteres.
Se uma string for explicitamente lançada para um CHAR(n)
ou VARCHAR(n)
, o PostgreSQL truncará a string para n
caracteres antes de inseri-la na tabela.
O tipo de dado TEXT
pode armazenar uma string com comprimento ilimitado.
Se você não especificar o n inteiro para o tipo de dado VARCHAR
, ele se comporta como o tipo de dado TEXT
. O desempenho do VARCHAR
(sem o tamanho n
) e TEXT
são os mesmos.
A única vantagem de especificar o especificador de comprimento para o tipo de dados VARCHAR
é que o PostgreSQL irá emitir um erro se você tentar inserir uma string que tenha mais de n
caracteres na coluna VARCHAR(n)
.
Unlike VARCHAR
, The CHARACTER
or CHAR
without the length specifier (n
) is the same as the CHARACTER(1)
or CHAR(1)
.
Diferente de outros sistemas de banco de dados, no PostgreSQL, não há diferença de performance entre três tipos de caracteres.
Na maioria dos casos, você deve usar TEXT
ou VARCHAR
. E você deve usar o VARCHAR(n)
quando quiser que o PostgreSQL verifique o comprimento.
Exemplos de tipos de caracteres PostgreSQL
Vejamos um exemplo para ver como os CHAR
, VARCHAR
, e TEXT
tipos de dados funcionam.
Primeiro, crie uma nova tabela chamada character_tests:
Code language: SQL (Structured Query Language) (sql)
Então, insira uma nova linha na character_tests
tabela.
Code language: SQL (Structured Query Language) (sql)
PostgreSQL emitiu um erro:
Code language: SQL (Structured Query Language) (sql)
É porque o tipo de dados da coluna x
é char(1)
e tentamos inserir uma string com três caracteres nesta coluna. Vamos corrigir isso:
Code language: SQL (Structured Query Language) (sql)
PostgreSQL emite um erro diferente:
Code language: Shell Session (shell)
É porque tentamos inserir uma string com mais de 10 caracteres na coluna y
que tem o tipo de dado varchar(10)
.
A seguinte instrução insere uma nova linha na tabela character_tests
com sucesso.
Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)
Code language: Shell Session (shell)
Resumo
- PostgreSQL suporta
CHAR
,VARCHAR
, eTEXT
tipos de dados. OCHAR
é um tipo de caractere de comprimento fixo enquanto oVARCHAR
eTEXT
são tipos de caractere de comprimento variável. - Utilizar
VARCHAR(n)
se você quiser validar o comprimento da string (n
) antes de inserir ou atualizar para uma coluna. -
VARCHAR
(sem o especificador de comprimento) eTEXT
são equivalentes.