MySQL umožňuje ukládat data JSON v nativním datovém typu JSON od verze 5.7.8. To vám umožní snadno ukládat dokumenty JSON a extrahovat datové prvky JSON bez konverze dat. V tomto článku se podíváme na to, jak ukládat data JSON v MySQL.
Datový typ MySQL JSON vám umožňuje ukládat data JSON tak, že v nich můžete snadno číst nebo vyhledávat hodnoty pomocí indexu klíče nebo pole, takže je to opravdu rychlé. Pro dotazování na data není potřeba převádět text na JSON nebo naopak.
Jak ukládat data JSON v MySQL
Podíváme se, jak ukládat data JSON v MySQL a také jak dotazovat sloupce s datovým typem JSON.
Zde je syntaxe pro definování sloupce JSON
column_name JSON
Upozorňujeme, že sloupec datového typu JSON nemůže mít výchozí hodnotu ani nemůže mít index.
Přečtěte si také:Jak porovnávat hodnoty Null v MySQL
Příklad datového typu MySQL JSON
Zde je příklad tabulky users(id, details) kde id je celé číslo a primární klíč, zatímco podrobnosti je sloupec datového typu JSON.
create table users( id int auto_increment primary key, details json );
Jak vložit JSON do MySQL
Zde je dotaz SQL pro uložení dokumentu JSON v 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 } }' );
Extrahujeme data ze sloupců JSON pomocí operátoru cesty sloupců (->)
Zde je příklad pro načtení názvů prohlížečů pro každého uživatele.
mysql> select id, details->'$.name' details from users; +----+-----------+ | id | details | +----+-----------+ | 1 | "Safari" | | 2 | "Chrome" | | 3 | "Firefox" | +----+-----------+ 3 rows in set (0.00 sec)
Uvidíte, že sloupce podrobností mají dvojité uvozovky. Pokud chcete odstranit dvojité uvozovky, použijte místo toho operátor ->>
mysql> select id, details->>'$.name' details from users; +----+-----------+ | id | details | +----+-----------+ | 1 | Safari | | 2 | Chrome | | 3 | Firefox | +----+-----------+ 3 rows in set (0.00 sec)
Můžete také agregovat klauzuli JSON dat GROUP BY a agregační funkce. Zde je příklad pro počítání počtu prohlížečů v našich datech.
mysql> SELECT details->>'$.name' detail, count(detail) FROM users GROUP BY details->>'$.name';
Uvidíte následující výstup
+---------+----------------+ | details | count(details) | +---------+----------------+ | Safari | 1 | | Firefox | 1 | | Chrome | 1 | +---------+----------------+ 3 rows in set (0.02 sec)
Podobně můžete také použít data JSON v klauzuli WHERE. Zde je příklad výběru dat s útratou> 100
mysql> SELECT id, SUM(details->>'$.spend') spend FROM users WHERE details->>'$.spend' > 100 GROUP BY id;
Doufejme, že vám tento článek pomůže pracovat s daty JSON v MySQL. Ubiq usnadňuje vizualizaci dat a jejich sledování na řídicích panelech v reálném čase. Vyzkoušejte Ubiq zdarma.