🧚 Écoute ! Beekeeper Studio est une interface de base de données rapide, moderne et open source Télécharger
24 août 2025 Par Matthew Rathbone

Le type de données JSONB de PostgreSQL facilite la gestion des données JSON dans ta base de données. Ses capacités vont bien au-delà du simple stockage : il offre des fonctions avancées pour manipuler et interroger finement les données JSON. Ce guide explore ces fonctions JSONB avec des exemples pratiques pour t’aider à tirer parti de la puissance de PostgreSQL dans la gestion des données JSON.

Pour une vue d’ensemble plus large du travail avec JSON dans PostgreSQL, y compris les types json et jsonb, consulte notre guide complet des fonctions JSON de PostgreSQL.

Introduction à JSONB

Le type de données jsonb de PostgreSQL est un format binaire qui stocke des données JSON. Il est très efficace et offre des possibilités d’indexation que json n’a pas. JSONB est généralement préférable grâce à sa flexibilité et à ses performances.

Créer une table avec JSONB

Commençons par créer une table qui utilise le type de données jsonb :

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

Insérer des données JSONB

Insère des données JSONB avec la syntaxe JSON standard. PostgreSQL valide et convertit automatiquement le JSON au format binaire :

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

Accéder aux valeurs JSONB

PostgreSQL fournit plusieurs opérateurs pour explorer les valeurs JSONB.

Extraire un objet JSONB

Pour accéder aux valeurs JSONB imbriquées, utilise les opérateurs -> et ->>. L’opérateur -> renvoie des données au format JSON, tandis que ->> renvoie du texte.

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

Résultat attendu :

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

Extraire des valeurs JSONB imbriquées

Pour des structures JSON plus profondes, enchaîne les opérateurs. L’opérateur ? vérifie d’abord l’existence de la clé :

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

Résultat attendu :

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

Fonctions JSONB

PostgreSQL propose toute une série de fonctions JSONB qui vont au-delà de la simple extraction de valeurs.

Vérifier l’existence d’une clé

L’opérateur ? vérifie si une clé existe :

SELECT data ? 'age' AS has_age FROM users;

Résultat attendu :

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

Vérifier l’inclusion

Utilise l’opérateur @> pour vérifier si un objet JSON en contient un autre :

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

Résultat attendu :

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

Concaténation de JSONB

Combine des colonnes ou des valeurs JSONB avec l’opérateur || :

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

Résultat attendu :

                            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}

Supprimer une clé d’un JSONB

Supprime une clé avec l’opérateur - :

SELECT data - 'age' AS partial_data FROM users;

Résultat attendu :

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

Indexation JSONB

Pour améliorer les performances des requêtes sur des données JSONB, utilise des index.

Créer un index JSONB

Un index GIN est idéal pour les types JSONB :

CREATE INDEX idx_users_data ON users USING GIN (data);

Cet index accélère les opérations comme la recherche de clés JSON ou de paires clé-valeur.

Fonctions JSONB avancées

PostgreSQL fournit des fonctions supplémentaires pour des opérations plus complexes :

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

Conclusion

Les fonctions JSONB de PostgreSQL offrent des options puissantes et flexibles pour travailler avec des données JSON dans ta base de données. Leurs principaux avantages :

  • Performance : format de stockage binaire avec une indexation efficace
  • Des opérateurs riches : extraction et manipulation faciles avec ->, ->>, @>, ?
  • Fonctions avancées : opérations complexes comme jsonb_set, jsonb_each_text et jsonb_array_elements
  • Prise en charge de l’indexation : index GIN pour des requêtes rapides

Ces capacités font de PostgreSQL un excellent choix pour les applications qui doivent stocker et interroger des données JSON semi-structurées en plus des données relationnelles classiques. En maîtrisant ces fonctions JSONB, tu pourras créer des applications de base de données plus flexibles et plus efficaces.

Beekeeper Studio est une interface de base de données gratuite & open source

Le meilleur outil de requêtes & éditeur SQL que j’aie jamais utilisé. Il m’offre tout ce dont j’ai besoin pour gérer ma base de données. - ⭐⭐⭐⭐⭐ Mit

Beekeeper Studio est rapide, intuitif et facile à utiliser. Beekeeper prend en charge plein de bases de données et fonctionne parfaitement sous Windows, Mac et Linux.

La version Linux de Beekeeper est 100% complète : rien de bâclé, aucun compromis sur les fonctionnalités.

Ce que les utilisateurs disent de Beekeeper Studio

★★★★★
« Beekeeper Studio a complètement remplacé mon ancien workflow SQL. C’est rapide, intuitif, et ça rend le travail sur les bases de données à nouveau agréable. »
— Alex K., développeur de bases de données
★★★★★
« J’ai essayé beaucoup d’interfaces de base de données, mais Beekeeper trouve l’équilibre parfait entre fonctionnalités et simplicité. Ça marche, tout simplement. »
— Sarah M., ingénieure full stack