🧚 Escute! O Beekeeper Studio é uma GUI de banco de dados rápida, moderna e open source Baixar
24 de agosto de 2025 Por Matthew Rathbone

O tipo de dado JSONB do PostgreSQL facilita o tratamento de dados JSON no seu banco de dados. Seus recursos vão além do simples armazenamento, oferecendo funções sofisticadas que permitem manipular e consultar dados JSON em detalhes. Este guia explora essas funções JSONB com exemplos práticos para ajudar você a aproveitar o poder do PostgreSQL no gerenciamento de dados JSON.

Para uma visão mais ampla de como trabalhar com JSON no PostgreSQL, incluindo os tipos json e jsonb, confira nosso guia completo de funções JSON do PostgreSQL.

Introdução ao JSONB

O tipo de dado jsonb no PostgreSQL é um formato binário que armazena dados JSON. Ele é altamente eficiente e oferece recursos de indexação que o json não tem. Em geral, o JSONB é preferível pela sua flexibilidade e pelos ganhos de desempenho.

Criando uma tabela com JSONB

Vamos começar criando uma tabela que usa o tipo de dado jsonb:

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    data JSONB
);

Inserindo dados JSONB

Insira dados JSONB usando a sintaxe JSON padrão. O PostgreSQL valida e converte automaticamente o JSON para o formato binário:

INSERT INTO users (data) VALUES 
('{"name": "John Doe", "email": "john@example.com", "age": 30}'),
('{"name": "Jane Doe", "email": "jane@example.com", "age": 25}'),
('{"name": "Alice Smith", "email": "alice@example.com", "age": 28, "address": {"city": "New York", "state": "NY"}}');

Acessando valores JSONB

O PostgreSQL oferece vários operadores para explorar valores JSONB.

Extraindo um objeto JSONB

Para acessar valores JSONB aninhados, use os operadores -> e ->>. O operador -> retorna os dados em formato JSON, enquanto ->> retorna texto.

SELECT data->'name' AS name, data->>'email' AS email FROM users;

Saída esperada:

  name   |       email        
---------+--------------------
 "John Doe" | john@example.com
 "Jane Doe" | jane@example.com

Extraindo valores JSONB aninhados

Para estruturas JSON mais profundas, encadeie os operadores. O operador ? verifica primeiro se a chave existe:

SELECT 
    data->>'name' AS name,
    data->'address'->>'city' AS city 
FROM users 
WHERE data ? 'address';

Saída esperada:

    name     |   city   
-------------|----------
 Alice Smith | New York

Funções JSONB

O PostgreSQL inclui um conjunto de funções JSONB que vão além da simples extração de valores.

Verificando a existência de uma chave

O operador ? verifica se uma chave existe:

SELECT data ? 'age' AS has_age FROM users;

Saída esperada:

 has_age 
---------
 t
 t
 t

Verificando contenção

Use o operador @> para verificar se um objeto JSON contém outro:

SELECT * FROM users WHERE data @> '{"age": 30}';

Saída esperada:

 id |                    data                     
----+---------------------------------------------
  1 | {"name": "John Doe", "email": "john@example.com", "age": 30}

Concatenação de JSONB

Combine colunas ou valores JSONB usando o operador ||:

SELECT data || '{"verified": false}' AS updated_data FROM users;

Saída esperada:

                            updated_data                            
-------------------------------------------------------------------
 {"age": 30, "name": "John Doe", "email": "john@example.com", "verified": false}
 {"age": 25, "name": "Jane Doe", "email": "jane@example.com", "verified": false}
 {"age": 28, "name": "Alice Smith", "email": "alice@example.com", "address": {"city": "New York", "state": "NY"}, "verified": false}

Removendo uma chave do JSONB

Remova uma chave usando o operador -:

SELECT data - 'age' AS partial_data FROM users;

Saída esperada:

                            partial_data                             
--------------------------------------------------------------------
 {"name": "John Doe", "email": "john@example.com"}
 {"name": "Jane Doe", "email": "jane@example.com"}
 {"name": "Alice Smith", "email": "alice@example.com", "address": {"city": "New York", "state": "NY"}}

Indexação de JSONB

Para melhorar o desempenho de consultas em dados JSONB, use índices.

Criando um índice JSONB

Um índice GIN é ideal para tipos JSONB:

CREATE INDEX idx_users_data ON users USING GIN (data);

Esse índice ajuda a acelerar operações como buscar a existência de chaves JSON ou de pares chave-valor.

Funções JSONB avançadas

O PostgreSQL oferece funções adicionais para operações mais complexas:

-- Convert JSONB to key-value pairs
SELECT jsonb_each_text(data) FROM users LIMIT 1;

-- Get all keys from a JSONB object
SELECT jsonb_object_keys(data) FROM users LIMIT 1;

-- Update a nested value using jsonb_set
UPDATE users 
SET data = jsonb_set(data, '{address,zip}', '"10001"')
WHERE data ? 'address';

Conclusão

As funções JSONB do PostgreSQL oferecem opções poderosas e flexíveis para trabalhar com dados JSON no seu banco de dados. As principais vantagens incluem:

  • Desempenho: formato de armazenamento binário com indexação eficiente
  • Operadores completos: extração e manipulação fáceis com ->, ->>, @>, ?
  • Funções avançadas: operações complexas como jsonb_set, jsonb_each_text e jsonb_array_elements
  • Suporte a indexação: índices GIN para consultas rápidas

Esses recursos tornam o PostgreSQL uma excelente escolha para aplicações que precisam armazenar e consultar dados JSON semiestruturados junto com dados relacionais tradicionais. Ao dominar essas funções JSONB, você pode criar aplicações de banco de dados mais flexíveis e eficientes.

Beekeeper Studio é um cliente de banco de dados gratuito e open source

A melhor ferramenta de consultas e edição de SQL que já usei. Tem tudo o que preciso para gerenciar meu banco de dados. - ⭐⭐⭐⭐⭐ Mit

O Beekeeper Studio é rápido, intuitivo e fácil de usar. Ele suporta vários bancos de dados e funciona muito bem no Windows, Mac e Linux.

A versão do Beekeeper para Linux tem 100% dos recursos, sem atalhos e sem concessões.

O que os usuários dizem sobre o Beekeeper Studio

★★★★★
"O Beekeeper Studio substituiu completamente meu antigo fluxo de trabalho com SQL. É rápido, intuitivo e torna o trabalho com bancos de dados agradável de novo."
— Alex K., Desenvolvedor de banco de dados
★★★★★
"Já testei muitas GUIs de banco de dados, mas o Beekeeper encontra o equilíbrio perfeito entre recursos e simplicidade. Simplesmente funciona."
— Sarah M., Engenheira Full Stack

Pronto para melhorar seu fluxo de trabalho com SQL?

download Baixe grátis