Mysql
 sql >> Database >  >> RDS >> Mysql

Come archiviare i dati JSON in MySQL

MySQL ti consente di archiviare i dati JSON nel tipo di dati JSON nativo dalla versione 5.7.8. Ciò ti consente di archiviare facilmente i documenti JSON ed estrarre elementi di dati JSON senza conversione dei dati. In questo articolo, vedremo come archiviare i dati JSON in MySQL.

Il tipo di dati MySQL JSON ti consente di archiviare i dati JSON in modo da poter leggere o cercare facilmente i valori in esso utilizzando la chiave o l'indice di matrice, rendendolo davvero veloce. Non è necessario convertire il testo in JSON o viceversa per eseguire query sui dati.


Come archiviare dati JSON in MySQL

Vedremo come archiviare i dati JSON in MySQL e anche come eseguire query su colonne con tipo di dati JSON.

Ecco la sintassi per definire una colonna JSON

column_name JSON

Tieni presente che una colonna del tipo di dati JSON non può avere un valore predefinito, né un indice.

Leggi anche:Come confrontare i valori Null in MySQL


Esempio di tipo di dati JSON MySQL

Ecco un esempio di una tabella users(id, dettagli) dove id è un numero intero e una chiave primaria mentre dettagli è una colonna del tipo di dati JSON.

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


Come inserire JSON in MySQL

Ecco la query SQL per archiviare il documento JSON in 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 } }'
);

Estrarremo i dati dalle colonne JSON utilizzando l'operatore del percorso della colonna (->)

Ecco un esempio per recuperare i nomi dei browser per ciascun utente.

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

Vedrai che le colonne dei dettagli hanno virgolette doppie. Se vuoi rimuovere le virgolette doppie, usa invece ->> operatore

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

Puoi anche aggregare dati JSON clausola GROUP BY e funzioni di aggregazione. Ecco un esempio per contare il numero di browser nei nostri dati.

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

Vedrai il seguente output

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

Allo stesso modo, puoi anche utilizzare i dati JSON nella clausola WHERE. Ecco un esempio per selezionare i dati con spesa> 100

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

Si spera che questo articolo ti aiuti a lavorare con i dati JSON in MySQL. Ubiq semplifica la visualizzazione dei dati e il monitoraggio in dashboard in tempo reale. Prova Ubiq gratuitamente.