Agora que estamos familiarizados com o conceito de tipos de dados de caracteres CHAR, VARCHAR e texto, respectivamente, no PostgreSQL, este artigo irá focar em destacar a diferença chave entre eles.qual é o tipo de dados CHAR?este tipo de dados é usado para armazenar caracteres de comprimento limitado. É representado como char(n)
ou character(n)
em PostgreSQL, onde n representa o limite do comprimento dos caracteres.If n is not specified it defaults to char(1)
or character(1)
.o que é o tipo de dados VARCHAR?este tipo de dados é usado para armazenar caracteres de comprimento limitado. É representado como varchar(n)
em PostgreSQL, onde n representa o limite do comprimento dos caracteres. Se n não for especificado, é por omissão varchar
que tem comprimento ilimitado.
O que é o tipo de dados de texto?este tipo de dados é usado para armazenar caracteres de comprimento ilimitado. É representado como text
em PostgreSQL. O desempenho do varchar (sem n) e do texto são os mesmos.
A tabela abaixo fornece a maior diferença entre CHAR, VARCHAR e texto:
Comparison | CHAR | VARCHAR | TEXT |
---|---|---|---|
Syntax | CHAR(n) | VARCHAR(n) | TEXT |
Representation | char(n) or character(n) |
varchar(n) |
text |
Length of characters | Limited | Limited | Unlimited |
Spaces and padding | Gets truncado | Fica truncado | Renains intacto |
Se n não for especificado | n = 1 | n = infinito | Conceito de n não existe |
Consulta ciclo | Extra ciclo de seleção duração | Extra ciclo de seleção duração | Nenhuma avaliação de caracteres comprimento |
Exemplo:
Vamos criar uma nova tabela(por exemplo, character_tests) para a demonstração usando os comandos abaixo:
CREATE TABLE character_tests ( id serial PRIMARY KEY, x CHAR (1), y VARCHAR (10), z TEXT);
Agora, vamos inserir uma nova linha na char_test tabela usando o comando abaixo:
INSERT INTO character_tests (x, y, z)VALUES ( 'Geeks', 'This is a test for varchar', 'This is a very long text for the PostgreSQL text column' );
nesta fase, o PostgreSQL irá gerar um erro como o tipo de dados do x coluna char(1) e procurou-se inserir uma seqüência de caracteres com três caracteres para esta coluna, como mostrado abaixo:
ERROR: value too long for type character(1)
Então, agora, vamos corrigi-lo.
INSERT INTO character_tests (x, y, z)VALUES ( 'G', 'This is a test for varchar', 'This is a very long text for the PostgreSQL text column' );
Agora, vamos obter o mesmo erro para a coluna y como o número de caracteres introduzidos é maior que 10, como mostrado abaixo:
ERROR: value too long for type character(10)
Vamos corrigir isso também.
INSERT INTO character_tests (x, y, z)VALUES ( 'Y', 'varchar(n)', 'This is a very long text for the PostgreSQL text column' );
Agora que temos conseguiu atribuir valores para o tipo de dados de caractere, verifique-o, executando o comando abaixo:
SELECT * FROM character_tests;
Saída: