sql >> Databasteknik >  >> RDS >> Mysql

Hur man lagrar JSON-data i MySQL

MySQL låter dig lagra JSON-data i inbyggd JSON-datatyp sedan version 5.7.8. Detta gör att du enkelt kan lagra JSON-dokument och extrahera JSON-dataelement utan datakonvertering. I den här artikeln kommer vi att titta på hur man lagrar JSON-data i MySQL.

MySQL JSON-datatyp låter dig lagra JSON-data så att du enkelt kan läsa eller söka värden i den med nyckel eller arrayindex, vilket gör det riktigt snabbt. Det finns inget behov av att konvertera text till JSON eller vice versa för att söka efter data.


Hur man lagrar JSON-data i MySQL

Vi kommer att titta på hur man lagrar JSON-data i MySQL och även hur man frågar efter kolumner med JSON-datatyp.

Här är syntaxen för att definiera en JSON-kolumn

column_name JSON

Observera att en kolumn för JSON-datatyp inte kan ha ett standardvärde och inte heller kan ha ett index.

Läs också:Hur man jämför nollvärden i MySQL


Exempel på MySQL JSON-datatyp

Här är ett exempel på en tabell users(id, details) där id är ett heltal och primärnyckel medan detaljer är en kolumn för JSON-datatyp.

create table users(
    id int auto_increment primary key,
    details json
   );


Hur man infogar JSON i MySQL

Här är SQL-frågan för att lagra JSON-dokument i 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 } }'
);

Vi kommer att extrahera data från JSON-kolumner med hjälp av kolumnsökvägsoperator (->)

Här är ett exempel för att hämta webbläsarnamn för varje användare.

mysql> select id, details->'$.name' details from users;
+----+-----------+
| id | details   |
+----+-----------+
|  1 | "Safari"  |
|  2 | "Chrome"  |
|  3 | "Firefox" |
+----+-----------+
3 rows in set (0.00 sec)

Du kommer att se att detaljkolumnerna har dubbla citattecken. Om du vill ta bort dubbla citattecken, använd ->> operator istället

mysql> select id, details->>'$.name' details from users;
+----+-----------+
| id | details   |
+----+-----------+
|  1 |  Safari   |
|  2 |  Chrome   |
|  3 |  Firefox  |
+----+-----------+
3 rows in set (0.00 sec)

Du kan också aggregera JSON-data GROUP BY-sats och aggregeringsfunktioner. Här är ett exempel för att räkna antalet webbläsare i vår data.

mysql> SELECT details->>'$.name' detail,
count(detail)
FROM users
GROUP BY details->>'$.name';

Du kommer att se följande utdata

+---------+----------------+
| details | count(details) |
+---------+----------------+
| Safari  |              1 |
| Firefox |              1 |
| Chrome  |              1 |
+---------+----------------+
3 rows in set (0.02 sec)

På samma sätt kan du också använda JSON-data i WHERE-satsen. Här är ett exempel på hur du väljer data med spend> 100

mysql> SELECT id, SUM(details->>'$.spend') spend
       FROM users
       WHERE details->>'$.spend' > 100
       GROUP BY id;

Förhoppningsvis kommer den här artikeln att hjälpa dig att arbeta med JSON-data i MySQL. Ubiq gör det enkelt att visualisera data och övervaka dem i realtidsinstrumentpaneler. Prova Ubiq gratis.

  1. JSON_UNQUOTE() – Ta bort citat från ett JSON-dokument i MySQL

  2. Hur lägger jag till index i MySQL-tabeller?

  3. Lagrad procedur för att hämta serverlagringsinformation i servern

  4. Skillnaden mellan tidsstämplar i millisekunder i Oracle