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
- Economia de espaço de armazenamento
- Verificação de erros de entrada
- 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')
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
- JSON
- 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