PostgreSQL Tipos de dados: Byte, Numérico, Caractere, Binário

PostgreSQL oferece um rico conjunto de tipos de dados nativos para usuários. Usuários podem adicionar novos tipos com a ajuda do comando CREATE TYPE. Ele também torna as consultas mais simples e legíveis.

Tipos de dados em PostgreSQL

PostgreSQL suporta os seguintes tipos de dados:

  • Tipos de Texto
  • Tipos Numéricos
  • Datas e Horários
  • XML
  • JSON
  • Booleano
  • Bits
  • Dados binários
  • Network
  • Arrays
  • Crie seu tipo de dados
  • Booleano
  • Provisórias
  • UUID
  • Ordem
  • JSON
  • Tipos de dados especiais para armazenar endereços de rede e dados geométricos.

Vamos estudar PostgreSQL tipos de dados em detalhes

Tipos de dados de caracteres

PostgreSQL suporta tipos de dados de caracteres para armazenar valores de texto. PostgreSQL constrói tipos de dados de caracteres a partir das mesmas estruturas internas. PostgreSQL oferece três tipos de dados de caracteres: CHAR(n), VARCHAR(n) e TEXT.

Nome Descrição
varchar(n) Permite declarar comprimento variável com um limite
Caráter(n) Comprimento fixo, preenchimento em branco
Texto Use pode usar este tipo de dados para declarar uma variável com comprimento ilimitado

Tipos de dados numéricos

PostgreSQL suporta dois tipos distintos de números:

  • Inteiros
  • Números de ponto flutuante
Nome Tamanho da loja Variação
smallint 2 bytes -32768 a + 32767
número inteiro 4 bytes -2147483648 a + 2147483647
grande 8 bytes -9223372036854775808 para 9223372036854775807
decimal variável Se você declarou como tipo de dados decimal varia de 131072 dígitos antes do ponto decimal a 16383 dígitos após o ponto decimal
numérico variável Se você declará-lo como um número, poderá incluir números de até 131072 dígitos antes da vírgula decimal até 16383 dígitos após a vírgula decimal
reais 4 bytes Precisão de 6 dígitos decimais
duplo 8 bytes Precisão de 15 dígitos decimais

Tipos de dados binários

Uma string binária é uma sequência de octetos ou bytes. Os tipos de dados binários do Postgres são divididos de duas maneiras.

  • Strings binárias permitem armazenar probabilidades de valor zero
  • Octetos não imprimíveis

As cadeias de caracteres não permitem zero octetos e também não permitem quaisquer outros valores e sequências de octetos que sejam inválidos de acordo com as regras de codificação do conjunto de caracteres do banco de dados.

Nome Tamanho de armazenamento Descrição
Byte 1 a 4 bytes mais o tamanho da string binária String binária de comprimento variável

Tipo de endereço de rede

Muitos aplicativos armazenam informações de rede, como endereços IP de usuários ou sensores. PostgreSQL possui três tipos nativos que ajudam a otimizar os dados da rede.

Nome Tamanho Descrição
cidra 7 ou 19 bytes IPV4 e IPv6 redes
Inet 7 ou 19 bytes Host e redes IPV4 e IPV5
macadr 6 bytes Endereços MAC

O uso de tipos de endereço de rede tem as seguintes vantagens

  1. Economia de espaço de armazenamento
  2. Verificação de erros de entrada
  3. Funções como pesquisar dados por sub-rede

Tipo de pesquisa de texto

PostgreSQL fornece dois tipos de dados que são projetados para suportar pesquisa de texto completo. Pesquisa de texto completo é pesquisar em uma coleção de documentos de linguagem natural para pesquisar aqueles que melhor correspondem a uma consulta.

  • Pesquisa de texto Tsvector PostgreSQL tipos de variáveis ​​representam um documento em um formato otimizado para pesquisa de texto
  • A pesquisa de texto do tipo de consulta armazena as palavras-chave que precisam ser pesquisadas

Tipos de dados de data/hora

PostgreSQL timestamp oferece precisão de microssegundos em vez de precisão de segundo. Além disso, você também tem a opção de armazenar com ou sem fuso horário. PostgreSQL irá converter o carimbo de data/hora com fuso horário para UTC na entrada e armazená-lo.

A entrada de data e hora é aceita em vários formatos, incluindo Postgres tradicional, ISO 8601. Compatível com SQL, etc.

PostgreSQL suporta pedidos de dia/mês/ano. Os formatos suportados são DMY, MDY, YMD

Tipos de dados temporais

Nome Tamanho Variação Resolução
Carimbo de data e hora sem fuso horário 8 bytes 4713 AC a 294276 DC 1 microssegundo/14 dígitos
Carimbo de data/hora com fuso horário 8 bytes 4713 AC a 294276 DC 1 microssegundo/14 dígitos
dados 4 bytes 4713 AC a 294276 DC Um dia
Hora sem fuso horário 8 bytes 00:00:00 to 24:00:00 1 microssegundo/14 dígitos
Tempo com fuso horário 12 bytes 00:00:00 + 1459 às 24:00:00-1459 1 microssegundo/14 dígitos
Intervalo 12 bytes -178000000 a 178000000 anos 1 microssegundo/14 dígitos

Exemplos

Entrada Descrição
2025-09-07 ISO 8601, 7 de setembro com qualquer estilo de data (formato recomendado)
7 de Setembro de 2025 7 de setembro com qualquer estilo de data
9/7/2025 7 de setembro com MDY, 9 de julho com DMY
9/7/25 7 de setembro de 2025, com MDY
2025-Sep-7 7 de setembro com qualquer estilo de data
7/2018/XNUMX 7 de setembro com qualquer estilo de data
7-Sep-25 7 de setembro de 2025, com YMD
20250907 ISO 8601,7 set 20225 em qualquer modo
2025.250 ano e dia do ano, neste caso, 7 de setembro de 2025
J25250 Data juliana

Hora/Hora com entrada de fuso horário

Entrada Descrição
11:19:38.507
11:19:38
11:19
111938
ISO 8601
11:19 da manhã O mesmo que 11:19
11:19 igual a 23:19
23: 19-3
Das 23h às 19h.
231900-03
ISO 8601, igual às 11h19 EST
23: 19 EST fuso horário especificado como EST, igual a 11h19 EST

Tipo Booleano

Um tipo de dados booleano pode conter

  • a Verdadeira
  • Falso
  • nulo

valores.

Você usa um bool or booleano palavra-chave para declarar uma coluna com o tipo de dados booleano.

Quando você insere valores em uma coluna booleana, o Postgre converte valores como

  • Sim
  • y
  • 1
  • t
  • verdadeiro

em 1.

Enquanto valores como

  • Não
  • N
  • 0
  • F
  • Falso

são convertidos para 0

Ao selecionar os dados, os valores são novamente convertidos para sim, verdadeiro, y, etc.

Tipos de dados geométricos

Os tipos de dados geométricos representam objetos espaciais bidimensionais. Eles ajudam a realizar operações como rotações, dimensionamento, translação, etc.

Nome Tamanho de Armazenamento Representação Descrição
ponto 16 bytes Aponte em um avião (x, y)
Line 32 bytes Linha infinita ((xl.il).(x2.y2))
Lseg 32 bytes Segmento de reta finito ((xl.il).(x2.y2))
Box 32 bytes Retangular Box ((xl.il).(x2.y2))
Caminho 16n + 16n bytes Fechar e abrir caminho ((xl.il),…)
Polygon 40 + 16nbytes Polygon [(xl.il)….]
Círculo 24 bytes Círculo <(xy).r> (ponto central e raio)

Tipos Enumerados

Enumerado PostgreSQL O tipo de dados é útil para representar informações que raramente mudam, como código do país ou ID da filial. O tipo de dados Enumerado é representado em uma tabela com chaves estrangeiras para garantir a integridade dos dados.

Exemplo

A cor do cabelo é bastante estática em um banco de dados demográfico

CREATE TYPE hair_color AS ENUM
('brown','black','red','grey','blond')

Tipos Enumerados

Tipo de intervalo

Muitos aplicativos de negócios exigem dados em intervalos. Normalmente, duas colunas (exemplo: data de início, data de término) são definidas para lidar com intervalos. Isso é ineficiente e difícil de manter.

Postgre construiu tipos de intervalo da seguinte forma

  • int4range — Exibe intervalo de número inteiro
  • int8range — Faixa de exibição de bigint
  • numrange — Mostra o intervalo numérico
  • tstrange — Ajuda você a exibir carimbo de data/hora sem fuso horário
  • estranho — Permite exibir carimbo de data/hora com fuso horário
  • intervalo de datas - intervalo de datas

Tipo de UUID

Identificações Universalmente Exclusivas (UUID) são uma quantidade de 128 bits gerada por um algoritmo. É muito improvável que o mesmo identificador seja gerado por outra pessoa no mundo usando o mesmo algoritmo. É por isso que para os sistemas distribuídos, esses identificadores são a escolha ideal, pois oferecem exclusividade dentro de um único banco de dados. Um UUID é escrito como um grupo de dígitos hexadecimais minúsculos, com vários grupos separados por hífens.

PostgreSQL possui um tipo de dados UUID nativo que consome 16 bytes de armazenamento. UUID é um tipo de dados ideal para chaves primárias.

Exemplo

d5f28c97-b962-43be-9cf8-ca1632182e8e

O Postgre também aceita formas alternativas de entradas UUID, como letras maiúsculas, sem hífens, colchetes, etc.

Tipo XML

PostgreSQL permite armazenar dados XML em um tipo de dados, mas nada mais é do que uma extensão para um tipo de dados de texto. Mas a vantagem é que verifica se o XML de entrada está bem formado.

Exemplo

XMLPARSE (DOCUMENT '<?xml version="1.0"?><tutorial><chapter>Data Type</chapter><chapter>...</chapter></tutorial>')

Tipo JSON

Para armazenar dados JSON PostgreSQL oferece 2 tipos de dados

  1. JSON
  2. JSONB
json JSON
Uma extensão simples de um tipo de dados de texto com validação JSON Uma representação binária dos dados JSON
A inserção é rápida, mas a recuperação de dados é relativamente lenta. A inserção é lenta, mas a seleção (a recuperação de dados é rápida)
Salva os dados inseridos exatamente como estão, incluindo espaços em branco. Suporta indexação. Pode otimizar o espaço em branco para tornar a recuperação mais rápida.
Reprocessamento na recuperação de dados Não é necessário reprocessamento na recuperação de dados

O tipo de dados JSON mais amplamente usado é jsonb, a menos que haja alguma necessidade especializada de usar o tipo de dados JSON.

Exemplo

CREATE TABLE employee (
  id integer NOT NULL,
  age  integer NOT NULL,
  data jsonb
);

INSERT INTO employee VALUES (1, 35, '{"name": "Tom Price", "tags": ["Motivated", "SelfLearner"], "onboareded": true}'); 

Pseudo-Tipos

PostgreSQL tem muitas entradas para fins especiais que são chamadas de pseudotipos. Você não pode usar pseudotipos como PostgreSQL tipos de coluna. São usados ​​​​para declarar o argumento ou tipo de retorno da função.

Cada um dos pseudotipos disponíveis é útil em situações onde os documentos de comportamento de uma função não correspondem simplesmente a pegar ou retornar um valor de um valor específico Tipo de dados SQL.

Nome Descrição
Qualquer A função aceita todos os tipos de dados de entrada.
Uma matriz A função aceita qualquer tipo de dados de array.
Qualquer elemento A função aceita qualquer tipo de dados.
Qualquer enumeração A função aceita qualquer tipo de dados enum.
Não matriz A função aceita qualquer tipo de dados que não seja array.
Cstring A função aceita ou retorna string C terminada em nulo.
Interno A função interna aceita ou retorna o tipo de dados interno do servidor.
Manipulador de idioma É declarado retornar o manipulador de idioma.
Registro Encontre uma função que retorne um tipo de linha não especificado.
Gatilho Uma função de gatilho é usada para retornar o gatilho.

É importante que o usuário que está usando esta função tenha certeza de que a função se comportará de forma segura quando um pseudotipo for usado como tipo de argumento.

Melhores práticas usando tipos de dados

  • Use o tipo de dados “texto”, a menos que queira limitar a entrada
  • Nunca use “char”.
  • Inteiros usam “int”. Use bigint somente quando você tiver números realmente grandes
  • Use “numérico” quase sempre
  • Use flutuar em PostgreSQL se você tiver fonte de dados IEEE 754

Resumo

  • PostgreSQL oferece um rico conjunto de tipos de dados nativos para usuários
  • PostgreSQL suporta tipos de dados de caracteres para armazenar valores de texto
  • PostgreSQL suporta dois tipos distintos de números: 1. Inteiros, 2. Números de ponto flutuante
  • Uma string binária é uma sequência de bytes ou octetos
  • PostgreSQL possui tipo de endereço de rede para ajudá-lo a otimizar o armazenamento de dados de rede
  • Pesquisa de texto PostgreSQL estruturas de dados são projetadas para suportar pesquisa de texto completo
  • Os tipos de dados Data/Hora PSQL permitem informações de data e hora em vários formatos
  • Os tipos de campo booleanos do Postgres podem conter três valores 1. Verdadeiro 2. Falso 3. Nulo
  • Geométrico PostgreSQL tipos de dados representam objetos espaciais bidimensionais
  • Tipos de dados enumerados em PostgreSQL é útil para representar informações que raramente mudam, como código do país ou ID da filial
  • Identificações Universalmente Exclusivas (UUID) são uma quantidade de 128 bits gerada por um algoritmo
  • PostgreSQL tem muitas entradas para fins especiais que são chamadas de pseudotipos
  • É uma prática recomendada usar o tipo de dados “texto”, a menos que você queira limitar a entrada