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.