Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment stocker des données JSON dans MySQL

MySQL vous permet de stocker des données JSON dans le type de données JSON natif depuis la version 5.7.8. Cela vous permet de stocker facilement des documents JSON et d'extraire des éléments de données JSON sans conversion de données. Dans cet article, nous verrons comment stocker des données JSON dans MySQL.

Le type de données MySQL JSON vous permet de stocker des données JSON de manière à pouvoir facilement lire ou rechercher des valeurs à l'aide d'un index de clé ou de tableau, ce qui le rend très rapide. Il n'est pas nécessaire de convertir du texte en JSON ou vice versa pour interroger des données.


Comment stocker des données JSON dans MySQL

Nous verrons comment stocker des données JSON dans MySQL et également comment interroger des colonnes avec le type de données JSON.

Voici la syntaxe pour définir une colonne JSON

column_name JSON

Veuillez noter qu'une colonne de type de données JSON ne peut pas avoir de valeur par défaut, ni d'index.

A lire également :Comment comparer les valeurs nulles dans MySQL


Exemple de type de données JSON MySQL

Voici un exemple de table users(id, details)id est un entier et une clé primaire tandis que détails est une colonne de type de données JSON.

create table users(
    id int auto_increment primary key,
    details json
   );


Comment insérer JSON dans MySQL

Voici la requête SQL pour stocker le document JSON dans MySQL.

insert into users(details)
    values(
      '{ "page": "/" , 
         "name": "Safari", 
         "os": "Mac", 
         "spend": 100, 
         "resolution": { "x": 1920, "y": 1080 } }'
),
(
      '{ "page": "/products", 
         "name": "Chrome", 
         "os": "Windows", 
         "spend": 150,
         "resolution": { "x": 1680, "y": 1050 } }'
),
(
     '{ "page": "/shoes", 
        "name": "Firefox", 
        "os": "Windows", 
        "spend": 200,
        "resolution": { "x": 1280, "y": 800 } }'
);

Nous allons extraire les données des colonnes JSON à l'aide de l'opérateur de chemin de colonne (->)

Voici un exemple pour récupérer les noms de navigateur pour chaque utilisateur.

mysql> select id, details->'$.name' details from users;
+----+-----------+
| id | details   |
+----+-----------+
|  1 | "Safari"  |
|  2 | "Chrome"  |
|  3 | "Firefox" |
+----+-----------+
3 rows in set (0.00 sec)

Vous verrez que les colonnes de détails ont des guillemets doubles. Si vous souhaitez supprimer les guillemets doubles, utilisez plutôt l'opérateur ->>

mysql> select id, details->>'$.name' details from users;
+----+-----------+
| id | details   |
+----+-----------+
|  1 |  Safari   |
|  2 |  Chrome   |
|  3 |  Firefox  |
+----+-----------+
3 rows in set (0.00 sec)

Vous pouvez également agréger les données JSON avec la clause GROUP BY et les fonctions d'agrégation. Voici un exemple pour compter le nombre de navigateurs dans nos données.

mysql> SELECT details->>'$.name' detail,
count(detail)
FROM users
GROUP BY details->>'$.name';

Vous verrez la sortie suivante

+---------+----------------+
| details | count(details) |
+---------+----------------+
| Safari  |              1 |
| Firefox |              1 |
| Chrome  |              1 |
+---------+----------------+
3 rows in set (0.02 sec)

De même, vous pouvez également utiliser des données JSON dans la clause WHERE. Voici un exemple pour sélectionner des données avec spend> 100

mysql> SELECT id, SUM(details->>'$.spend') spend
       FROM users
       WHERE details->>'$.spend' > 100
       GROUP BY id;

J'espère que cet article vous aidera à travailler avec des données JSON dans MySQL. Ubiq facilite la visualisation des données et leur suivi dans des tableaux de bord en temps réel. Essayez Ubiq gratuitement.