sql >> Databáze >  >> RDS >> Mysql

Jak ukládat data JSON v MySQL

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.

  1. Pořadí příkazu SQL Select bez klauzule Order By

  2. Jak vyřešit nemožnost přepnout chybu kódování při vkládání XML do SQL Serveru

  3. MySQL – funkce FOUND_ROWS() pro celkový počet ovlivněných řádků

  4. Je v Apache Spark 2.0.0 možné načíst dotaz z externí databáze (spíše než uchopit celou tabulku)?