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