MySQL umożliwia przechowywanie danych JSON w natywnym typie danych JSON od wersji 5.7.8. Umożliwia to łatwe przechowywanie dokumentów JSON i wyodrębnianie elementów danych JSON bez konwersji danych. W tym artykule przyjrzymy się, jak przechowywać dane JSON w MySQL.
Typ danych MySQL JSON umożliwia przechowywanie danych JSON w taki sposób, aby można było łatwo odczytywać lub wyszukiwać w nich wartości za pomocą indeksu klucza lub tablicy, dzięki czemu jest to naprawdę szybkie. Nie ma potrzeby konwertowania tekstu do formatu JSON lub odwrotnie w przypadku zapytań o dane.
Jak przechowywać dane JSON w MySQL
Przyjrzymy się, jak przechowywać dane JSON w MySQL, a także jak wysyłać zapytania do kolumn z typem danych JSON.
Oto składnia do zdefiniowania kolumny JSON
column_name JSON
Należy pamiętać, że kolumna typu danych JSON nie może mieć wartości domyślnej ani indeksu.
Przeczytaj także:Jak porównywać wartości Null w MySQL
Przykład typu danych MySQL JSON
Oto przykład tabeli użytkownicy(id, szczegóły) gdzie id jest liczbą całkowitą i kluczem podstawowym, podczas gdy szczegóły to kolumna typu danych JSON.
create table users(
id int auto_increment primary key,
details json
);
Jak wstawić JSON do MySQL
Oto zapytanie SQL do przechowywania dokumentu JSON w 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 } }'
); Wydobędziemy dane z kolumn JSON za pomocą operatora ścieżki kolumny (->)
Oto przykład pobierania nazw przeglądarek dla każdego użytkownika.
mysql> select id, details->'$.name' details from users; +----+-----------+ | id | details | +----+-----------+ | 1 | "Safari" | | 2 | "Chrome" | | 3 | "Firefox" | +----+-----------+ 3 rows in set (0.00 sec)
Zobaczysz, że kolumny szczegółów mają podwójne cudzysłowy. Jeśli chcesz usunąć podwójne cudzysłowy, użyj zamiast tego operatora ->>
mysql> select id, details->>'$.name' details from users; +----+-----------+ | id | details | +----+-----------+ | 1 | Safari | | 2 | Chrome | | 3 | Firefox | +----+-----------+ 3 rows in set (0.00 sec)
Można również agregować klauzulę GROUP BY danych JSON i funkcje agregacji. Oto przykład, jak zliczyć liczbę przeglądarek w naszych danych.
mysql> SELECT details->>'$.name' detail, count(detail) FROM users GROUP BY details->>'$.name';
Zobaczysz następujące wyjście
+---------+----------------+ | details | count(details) | +---------+----------------+ | Safari | 1 | | Firefox | 1 | | Chrome | 1 | +---------+----------------+ 3 rows in set (0.02 sec)
Podobnie możesz również użyć danych JSON w klauzuli WHERE. Oto przykład wybierania danych za pomocą wydatków> 100
mysql> SELECT id, SUM(details->>'$.spend') spend
FROM users
WHERE details->>'$.spend' > 100
GROUP BY id;
Mamy nadzieję, że ten artykuł pomoże ci pracować z danymi JSON w MySQL. Ubiq ułatwia wizualizację danych i monitorowanie ich w pulpitach nawigacyjnych w czasie rzeczywistym. Wypróbuj Ubiq za darmo.