Executando verificação de segurança...
8

PostgreSQL: Tipos de Dados

O PostgreSQL, carinhosamente chamado de postgres, é um dos SGBDs (Sistemas Gerenciadores de Banco de Dados) mais famosos hoje em dia, sendo o SGBD open source mais querido pelos programadores atualmente (segundo minha experiência).

Nesse artigo busco apresentar os tipos de dados mais comuns suportados pelo postgres como ferramenta de consulta rápida e direta para outros desenvolvedores. Sem mais delongas, vamos ao conteúdo

Tipos de Dados

Numéricos

Inclui desde inteiros até números de ponto flutuante

  • smallint: armazena valores inteiros com sinal, ocupando 2 bytes de tamanho
  • integer: armazena valores inteiros com sinal, ocupando 4 bytes de tamanho
  • bigint: armazena valores inteiros com sinal, ocupando 8 bytes de tamanho
  • decimal: armazena valores com muitos dígitos. Geralmente usado para armazenar valores financeiros. O desenvolvedor pode especificar a precisão e a escala para esse tipo
  • numeric: um apelido para o tipo de dados decimal
  • real: armazena valores de ponto flutuante com 4 bytes e precisão de 6 dígitos decimais
  • double precision: armazena valores de ponto flutuante com 8 bytes e precisão de 15 dígitos decimais

Caractere

Usados para lidar com alfanumérico e com textos

  • char(n) : armazena strings de tamanho fixo com um tamanho n específico
  • varchar(n) : armazena strings de tamanho variável com com um tamanho n máximo
  • text : armazena strings de tamanho variável sem tamanho máximo

Binários

Inclui basicamente o tipo de dados Byte

  • bytea : armazena uma string de binários com tamanho variável, sem tamanho máximo

Data e Tempo

Diversas formas para lidar com datas e tempo

  • date : armazena datas sem informação de time zone (YYYY-MM-DD)
  • time : armazena valores de tempo sem informação de time zone (HH:MM:SS)
  • timestamp : armazena valores de tempo e de data sem informações de time zone
  • timestamptz : armazena valores de tempo e de data com informação de time zone
  • interval : um intervalo de tempo, como a diferença de dois timestamps

Booleano

Um tipo de dados para lidar com verdadeiro e falso

  • boolean

Enumerado

Criação de tipos de dados customizados, que consistem de um conjunto de valores ordenado e estático

  • CREATE TYPE AS ENUM

Exemplo:

CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');

Dados Geométricos e de Rede

  • point, line, lseg, box, polygon, path, circle: armazena pontos, linhas e várias outras formas
  • inet, cidr: armazena endereços IP e subredes

Conclusão

Com esse guia você tem uma referência inicial para conhecer os principais tipos de dados suportados pelo postgres, podendo seguir seus estudos a partir daqui dependendo da sua necessidade.

Esse artigo é um guia rápido para se orientar quando precisar achar um tipo de dados específico;.

Dúvidas, sugestões e correções de conteúdo são sempre muito bem vindas. Espero que você tenha gostado do conteúdo. Espero te ver no meu próximo artigo. Até lá!

Carregando publicação patrocinada...
6

Complementado:

Dois tipos de dados notáveis no PostgreSQL são JSON e JSONB, que são usados para armazenar dados não estruturados. O tipo de dado JSON é usado para armazenar dados no formato JSON, este tipo mantém a ordem exata dos dados a formatação original. O JSONB armazena dados em um formato binário. Isso significa que os dados são mais eficientemente parseados e acessados, mas a ordem dos elementos e espaços em bracos não é preservada. A grande vantagem do JSONB é a sua capacidade de ser indexado e de realizar consultas e manipulações diretamente nos campos do JSON.

Outro tipo extremamente poderoso e único do Postgres, é o range, que é eficaz em armazenar e gerenciar intervalos, de uma maneira que reduz a complexidade e melhora a eficiência. Por exemplo, os tipos numrange para intervalos de números decimais é muito útil para lidar com faixas de preços. O tsrange para intervalos de timestamps é particularmente útil em cenários como agendamentos. Uma das principais vantagens dos tipos de dado range é a capacidade de utilização de índices GiST, que melhoram significativamente a performance em consultas complexas que envolvem a sobreposição ou comparação de intervalos.

Assim como o JSON/JSONB transformou o PostgreSQL em uma opção viável para bancos de dados de documentos, oferecendo a flexibilidade dos dados não estruturados com as garantias e funcionalidades do modelo relacional, os tipos de dado range estendem ainda mais sua versatilidade e poder, realçando o motivo do PostgreSQL ser o banco de dados open-source mais avançado do mundo!

1

o SGBD open source mais querido pelos programadores atualmente

tem fonte disso?

É possível criar seus próprios tipos.

Espero ter ajudado.


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).

1

Pior que na verdade não, falei com base em experiência. Vou deixar isso mais claro no texto.

Quanto a criação de seus próprios tipos, isso está escrito na sessão "Enumerado"

Obrigado pelo comentário.

1

Um detalhe importante sobre sua descrição dos tipos numéricos, por exemplo o integer, é que ele não armazena "até 4 bytes de tamanho".

Independente do valor, ele sempre vai acomodar o integer em 4 bytes. Ou seja, mesmo que seja o número zero, um espaço de 4 bytes sempre será usado.

Uma descrição mais precisa seria:

integer: armazena valores inteiros com sinal com 4 bytes de tamanho, cujos valores variam de -2147483648 até +2147483647.

Eu peguei o integer como exemplo, mas esta observação vale para os outros tipos numéricos que vc descreveu.

                                                           |
2

Muito obrigado pelo comentário, amigo.

Na verdade, minha ideia era dizer que o tamanho máximo que um número pode assumir com esse tipo é o tamanho que 4 bytes consegue armazenar, mas eu entendi que ficou ambíguo. Vou corrigir.

1
1

Na verdade, já vi discussões aconselhando usar inteiro. Para fazer isso, você só armazena os dados em centavos.

Por exemplo: Ao invés de armazenar 5 reais e 60 centavos, você armazena 560 centavos.

Na hora de apresentar para o usuário, no front end adiciona uma vírgula.

Assim, temos muito menos riscos de problemas na hora de conversões ou contas matemáticas.