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.