Tipos de dados PostgreSQL: Caractere - Numérico - Binário - boleano

Índice:

Anonim

PostgreSQL oferece um rico conjunto de tipos de dados nativos para usuários. Os usuários podem adicionar novos tipos com a ajuda do comando CREATE TYPE. 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 horas
  • XML
  • JSON
  • boleano
  • Bits
  • Dados binários
  • Rede
  • Matrizes
  • Crie seu tipo de dados
  • boleano
  • Temporal
  • UUID
  • Variedade
  • JSON
  • Tipos de dados especiais para armazenar um endereço de rede e dados geométricos.

Vamos estudar os tipos de dados PostgreSQL em detalhes

  • Tipos de dados de caracteres
  • Tipos de dados numéricos
  • Tipos de dados binários
  • Tipo de endereço de rede
  • Tipo de pesquisa de texto
  • Tipos de dados de data / hora
  • Tipo Booleano
  • Tipos de dados geométricos
  • Tipos Enumerados
  • Tipo de intervalo
  • Tipo UUID
  • Tipo XML
  • Tipo JSON
  • Pseudotipos

Tipos de dados de caracteres

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

Nome Descrição
varchar (n) Permite que você declare comprimento variável com um limite
Char (n) Comprimento fixo, preenchido em branco
Texto Use pode usar este tipo de dados para declarar uma variável com comprimento ilimitado

Tipos de dados numéricos

O PostgreSQL suporta dois tipos distintos de números:

  • Inteiros
  • Números de ponto flutuante
Nome Tamanho da loja Faixa
smallint 2 bytes -32768 a +32767
inteiro 4 bytes -2147483648 a +2147483647
bigint 8 bytes -9223372036854775808 a 9223372036854775807
decimal variável Se você declarou como decimal, o tipo de dados varia de 131072 dígitos antes da vírgula até 16383 dígitos depois da vírgula
numérico variável Se você declará-lo como o número, você pode incluir um número de até 131072 dígitos antes da vírgula até 16383 dígitos depois da vírgula
real 4 bytes Precisão de 6 dígitos decimais
em dobro 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ários permitem o armazenamento de 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 de octetos e sequências 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ço IP de usuários ou

sensores. O PostgreSQL possui três tipos nativos que ajudam a otimizar os dados da rede.

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

Usar os tipos de endereço de rede tem as seguintes vantagens

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

Tipo de pesquisa de texto

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

  • Os tipos de variáveis ​​do PostgreSQL de pesquisa de texto Tsvector 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

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

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

PostgreSQL suporta ordenação por Dia / Mês / Ano. Os formatos suportados são DMY, MDY, YMD

Tipos de dados temporais

Nome Tamanho Faixa Resolução
Timestamp sem fuso horário 8 bytes 4713 AC a 294276 DC 1 microssegundo / 14 dígitos
Timestamp com fuso horário 8 bytes 4713 AC a 294276 DC 1 microssegundo / 14 dígitos
encontro 4 bytes 4713 AC a 294276 DC Um dia
Tempo sem fuso horário 8 bytes 00:00:00 às 24:00:00 1 microssegundo / 14 dígitos
Tempo com fuso horário 12 bytes 00:00:00 + 1459 a 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
07/09/2025 7 de setembro com MDY, 9 de julho com DMY
07/09/25 7 de setembro de 2025, com MDY
2025-set-7 7 de setembro com qualquer estilo de data
7 de setembro de 2018 7 de setembro com qualquer estilo de data
7 de setembro de 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
11h19 Igual a 11:19
23:19 igual a 23:19
23: 19-3 23: 19-03: 00 231900-03 ISO 8601, igual a 23:19 EST
23:19 EST fuso horário especificado como EST, o mesmo que 23:19 EST

Tipo Booleano

Um tipo de dados booleano pode conter

  • Verdade
  • Falso
  • nulo

valores.

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

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

  • sim
  • y
  • 1
  • t
  • verdade

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, tradução, etc.

Nome Tamanho de Armazenamento Representação Descrição
Ponto 16 bytes Aponte em um avião (x, y)
Linha 32 bytes Linha infinita ((xl.yl). (x2.y2))
Lseg 32 bytes Segmento de linha finita ((xl.yl). (x2.y2))
Caixa 32 bytes Caixa Retangular ((xl.yl). (x2.y2))
Caminho 16n + 16n bytes Fechar e abrir caminho ((xl.yl), ...)
Polígono 40 + 16n bytes Polígono [(xl.yl)….]
Círculo 24 bytes Círculo <(xy) .r> (ponto central e raio)

Tipos Enumerados

O tipo de dados PostgreSQL enumerado é útil para representar informações que raramente mudam, como código de país ou ID de 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')

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 como segue

  • int4range - intervalo de exibição de inteiro
  • int8range - Faixa de exibição de bigint
  • numrange - mostra o intervalo numérico
  • tstrange - Ajuda 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 UUID

Identifica universalmente única (UUID) é uma quantidade de 128 bits que é 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 em um único banco de dados. Um UUID é escrito como um grupo de dígitos hexadecimais minúsculos, com vários grupos separados por hifens.

PostgreSQL tem 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

Postgre também aceita formas alternativas de entradas UUID como todas as maiúsculas, sem hifens, colchetes, etc.

Tipo XML

O 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 ele verifica se o XML de entrada está bem formado.

Exemplo:

XMLPARSE (DOCUMENT 'Data Type')

Tipo JSON

Para armazenar dados JSON, o PostgreSQL oferece 2 tipos de dados

  1. JSON
  2. JSONB
json Jsonb
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 selecione (a recuperação de dados é rápida)
Salva os dados inseridos exatamente como estão, incluindo os 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 Nenhum reprocessamento necessário na recuperação de dados

O tipo de dados JSON mais amplamente usado nos usa 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}');

Pseudotipos

O PostgreSQL possui muitas entradas de propósito especial chamadas de pseudo-tipos. Você não pode usar pseudo-tipos como tipos de coluna do PostgreSQL. Eles são usados ​​para declarar o argumento ou o tipo de retorno da função.

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

Nome Descrição
Nenhum A função aceita todos os tipos de dados de entrada.
Uma matriz A função aceita qualquer tipo de dado array.
Qualquer elemento A função aceita qualquer tipo de dados.
Qualquer enum A função aceita qualquer tipo de dados enum.
Nonarray A função aceita qualquer tipo de dados não 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.
Language_handler Ele é declarado para retornar o manipulador de linguagem.
Registro Encontre uma função que retorne um tipo de linha não especificado.
Desencadear 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 terá um comportamento seguro quando um pseudo-tipo for usado como tipo de argumento.

Melhores práticas usando tipos de dados

  • Use o tipo de dados "texto" a menos que você queira limitar a entrada
  • Nunca use "char".
  • Inteiros usam "int." Use bigint apenas quando você tiver números realmente grandes
  • Use "numérico" quase sempre
  • Use float no PostgreSQL se você tiver a 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
  • O 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 tem tipo de endereço de rede para ajudá-lo a otimizar o armazenamento de dados de rede
  • Pesquisa de texto As estruturas de dados do PostgreSQL são projetadas para suportar pesquisa de texto completo
  • Os tipos de dados PSQL de data / hora permitem informações de data e hora em vários formatos
  • Os tipos de campo Boolean Postgres podem conter três valores 1. Verdadeiro 2. Falso 3. Nulo
  • Os tipos de dados geométricos PostgreSQL representam objetos espaciais bidimensionais
  • Os tipos de dados enumerados no PostgreSQL são úteis para representar informações que raramente mudam, como código de país ou ID de filial
  • Identifica universalmente única (UUID) é uma quantidade de 128 bits que é gerada por um algoritmo
  • PostgreSQL tem muitas entradas de propósito especial que são chamadas de pseudo-tipos
  • É uma prática recomendada usar o tipo de dados "texto", a menos que você queira limitar a entrada