Module 1 : Comprendre les bases de données
1.1 — Pourquoi les bases de données ? Aperçu
Module 2 : Installation et découverte de PostgreSQL
2.1 — Installer PostgreSQL Aperçu
Module 3 : Le langage SQL — Les fondamentaux
3.1 — SELECT : lire des données Aperçu
Module 4 : Conception et création de tables
4.1 — Clés primaires et identifiants Aperçu
Module 5 : Requêtes SELECT avancées
5.1 — DISTINCT, CASE, COALESCE, NULLIF Aperçu
Module 6 : Jointures SQL
6.1 — INNER JOIN : le cœur des bases relationnelles Aperçu
Module 7 : Agrégation et regroupement avancés
7.1 — GROUP BY approfondi Aperçu
Module 8 : Sous-requêtes et CTE
8.1 — Sous-requêtes scalaires et de liste Aperçu
Module 9 : Fonctions SQL intégrées
9.1 — Fonctions de chaînes Aperçu
Module 10 : Indexation et performances
10.1 — Comprendre EXPLAIN ANALYZE Aperçu
Module 11 : Contraintes avancées et intégrité
11.1 — Domaines et types personnalisés Aperçu
Module 12 : Transactions et concurrence
12.1 — Transactions ACID Aperçu
Module 13 : Vues et vues matérialisées
13.1 — Vues simples et modifiables Aperçu
Module 14 : Procédures stockées et fonctions PL/pgSQL
14.1 — Premiers pas en PL/pgSQL Aperçu
Module 15 : Triggers et événements
15.1 — Créer un trigger simple Aperçu
Module 16 : Sécurité, rôles et permissions
16.1 — Rôles, utilisateurs et GRANT Aperçu
Module 17 : Sauvegarde, restauration et maintenance
17.1 — pg_dump et pg_restore Aperçu
Module 18 : Types de données avancés
18.1 — JSON et JSONB Aperçu
Module 19 : Recherche plein texte (Full-Text Search)
19.1 — tsvector et tsquery Aperçu
Module 20 : Projet final — Conception complète
20.1 — Analyse du besoin et cahier des charges Aperçu

Le reste de la formation est réservé aux inscrits.

S'inscrire gratuitement
Module 18 : Types de données avancés Aperçu gratuit

18.1 — JSON et JSONB

📋 Objectifs d'apprentissage

  • Stocker et interroger du JSON avec JSONB
  • Utiliser les opérateurs ->, ->>, #>, @>, ?
  • Indexer du JSONB avec GIN
CREATE TABLE produits (id SERIAL PRIMARY KEY, nom TEXT, attributs JSONB);
INSERT INTO produits (nom, attributs) VALUES ('T-shirt', '{"couleur":"rouge","tailles":["S","M","L"],"prix":19.99,"en_stock":true}');
-- Extraire une valeur
SELECT nom, attributs->>'couleur' AS couleur FROM produits;
-- Filtrer sur JSONB
SELECT * FROM produits WHERE attributs @> '{"couleur":"rouge"}';
-- Index GIN pour JSONB
CREATE INDEX idx_produits_attributs ON produits USING GIN (attributs);
JSONJSONB
StockageTexte brut (préserve l'ordre, espaces)Binaire décomposé (plus rapide)
IndexableNonOui (GIN)
PerformancePlus lent à l'extractionPlus rapide, mais INSERT plus lent
UsageLogging, stockage brutDonnées à interroger (recommandé)
Ceci est un aperçu gratuit.
Voir la formation complète