🧚 Dengar! Beekeeper Studio adalah GUI database yang cepat, modern, dan open source Unduh
24 Agustus 2025 Oleh Matthew Rathbone

Tipe data JSONB di PostgreSQL memudahkan pengelolaan data JSON di dalam database Anda. Kemampuannya tidak sebatas penyimpanan sederhana, tetapi juga menawarkan fungsi-fungsi canggih untuk memanipulasi dan melakukan query data JSON secara mendetail. Panduan ini akan membahas fungsi-fungsi JSONB tersebut dengan contoh praktis agar Anda bisa memaksimalkan kekuatan PostgreSQL dalam mengelola data JSON.

Untuk gambaran yang lebih luas tentang cara bekerja dengan JSON di PostgreSQL, termasuk tipe json dan jsonb, lihat panduan lengkap kami tentang fungsi JSON PostgreSQL.

Pengenalan JSONB

Tipe data jsonb di PostgreSQL adalah format biner untuk menyimpan data JSON. Tipe ini sangat efisien dan menawarkan kemampuan indexing yang tidak dimiliki json. JSONB umumnya lebih disarankan karena fleksibilitas dan keunggulan performanya.

Membuat Tabel dengan JSONB

Mari mulai dengan membuat tabel yang menggunakan tipe data jsonb:

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

Menyisipkan Data JSONB

Sisipkan data JSONB menggunakan sintaks JSON standar. PostgreSQL otomatis memvalidasi dan mengonversi JSON ke format biner:

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"}}');

Mengakses Nilai JSONB

PostgreSQL menyediakan berbagai operator untuk menggali nilai JSONB.

Mengekstrak Objek JSONB

Untuk mengakses nilai JSONB bersarang, gunakan operator -> dan ->>. Operator -> mengembalikan data dalam format JSON, sedangkan ->> mengembalikan teks.

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

Output yang Diharapkan:

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

Mengekstrak Nilai JSONB Bersarang

Untuk struktur JSON yang lebih dalam, rangkai operatornya. Operator ? memeriksa keberadaan key terlebih dahulu:

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

Output yang Diharapkan:

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

Fungsi JSONB

PostgreSQL menyertakan serangkaian fungsi JSONB yang lebih dari sekadar ekstraksi nilai sederhana.

Memeriksa Keberadaan Key

Operator ? memeriksa apakah sebuah key ada:

SELECT data ? 'age' AS has_age FROM users;

Output yang Diharapkan:

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

Memeriksa Containment

Gunakan operator @> untuk memverifikasi apakah sebuah objek JSON memuat objek lainnya:

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

Output yang Diharapkan:

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

Penggabungan JSONB

Gabungkan kolom atau nilai JSONB menggunakan operator ||:

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

Output yang Diharapkan:

                            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}

Menghapus Key dari JSONB

Hapus sebuah key menggunakan operator -:

SELECT data - 'age' AS partial_data FROM users;

Output yang Diharapkan:

                            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"}}

Indexing JSONB

Untuk meningkatkan performa query pada data JSONB, gunakan index.

Membuat Index JSONB

Index GIN sangat ideal untuk tipe JSONB:

CREATE INDEX idx_users_data ON users USING GIN (data);

Index ini membantu mempercepat operasi seperti mencari keberadaan key JSON atau pasangan key-value.

Fungsi JSONB Lanjutan

PostgreSQL menyediakan fungsi tambahan untuk operasi yang lebih kompleks:

-- 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';

Kesimpulan

Fungsi JSONB di PostgreSQL menawarkan opsi yang andal dan fleksibel untuk bekerja dengan data JSON di dalam database Anda. Keunggulan utamanya meliputi:

  • Performa: Format penyimpanan biner dengan indexing yang efisien
  • Operator yang lengkap: Ekstraksi dan manipulasi mudah dengan ->, ->>, @>, ?
  • Fungsi lanjutan: Operasi kompleks seperti jsonb_set, jsonb_each_text, dan jsonb_array_elements
  • Dukungan indexing: Index GIN untuk query yang cepat

Kemampuan ini menjadikan PostgreSQL pilihan tepat untuk aplikasi yang perlu menyimpan dan melakukan query data JSON semi-terstruktur bersama data relasional tradisional. Dengan menguasai fungsi-fungsi JSONB ini, Anda bisa membangun aplikasi database yang lebih fleksibel dan efisien.

Beekeeper Studio Adalah GUI Database Gratis & Open Source

Tool query & editor SQL terbaik yang pernah saya pakai. Semua yang saya butuhkan untuk mengelola database ada di sini. - ⭐⭐⭐⭐⭐ Mit

Beekeeper Studio cepat, intuitif, dan mudah digunakan. Beekeeper mendukung banyak sekali database, dan berjalan mulus di Windows, Mac, dan Linux.

Versi Linux Beekeeper punya fitur 100% lengkap, tanpa potong kompas, tanpa kompromi fitur.

Apa Kata Pengguna tentang Beekeeper Studio

★★★★★
"Beekeeper Studio sepenuhnya menggantikan workflow SQL lama saya. Cepat, intuitif, dan membuat pekerjaan database kembali menyenangkan."
— Alex K., Database Developer
★★★★★
"Saya sudah mencoba banyak GUI database, tetapi Beekeeper punya keseimbangan sempurna antara fitur dan kesederhanaan. Langsung berfungsi."
— Sarah M., Full Stack Engineer

Siap Meningkatkan Workflow SQL Anda?

download Unduh Gratis