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 tamanhointeger
: armazena valores inteiros com sinal, ocupando 4 bytes de tamanhobigint
: armazena valores inteiros com sinal, ocupando 8 bytes de tamanhodecimal
: armazena valores com muitos dígitos. Geralmente usado para armazenar valores financeiros. O desenvolvedor pode especificar a precisão e a escala para esse tiponumeric
: um apelido para o tipo de dadosdecimal
real
: armazena valores de ponto flutuante com 4 bytes e precisão de 6 dígitos decimaisdouble 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 tamanhon
específicovarchar(n)
: armazena strings de tamanho variável com com um tamanhon
máximotext
: 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 zonetimestamptz
: armazena valores de tempo e de data com informação de time zoneinterval
: 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 formasinet
,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á!
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!
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).
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.
|
Para armazenar um campo de valor (Dinheiro), o interessante seria usar decimal então ?