sql >> Database >  >> RDS >> Mysql

Hoe JSON-gegevens op te slaan in MySQL

Met MySQL kunt u JSON-gegevens opslaan in het native JSON-gegevenstype sinds versie 5.7.8. Hierdoor kunt u eenvoudig JSON-documenten opslaan en JSON-gegevenselementen extraheren zonder gegevensconversie. In dit artikel zullen we bekijken hoe u JSON-gegevens opslaat in MySQL.

Met het MySQL JSON-gegevenstype kunt u JSON-gegevens opslaan, zodat u er gemakkelijk waarden in kunt lezen of zoeken met behulp van de sleutel- of array-index, waardoor het echt snel gaat. Het is niet nodig om tekst te converteren naar JSON of vice versa voor het opvragen van gegevens.


JSON-gegevens opslaan in MySQL

We zullen bekijken hoe u JSON-gegevens in MySQL kunt opslaan en ook hoe u kolommen kunt opvragen met het JSON-gegevenstype.

Hier is de syntaxis om een ​​JSON-kolom te definiëren

column_name JSON

Houd er rekening mee dat een JSON-gegevenstypekolom geen standaardwaarde kan hebben en ook geen index.

Lees ook:Null-waarden vergelijken in MySQL


MySQL JSON-gegevenstype voorbeeld

Hier is een voorbeeld van een tabel users(id, details) waar id is een geheel getal en primaire sleutel terwijl details is een JSON-gegevenstypekolom.

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


JSON invoegen in MySQL

Hier is de SQL-query om het JSON-document in MySQL op te slaan.

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 } }'
);

We extraheren gegevens uit JSON-kolommen met behulp van de kolompadoperator (->)

Hier is een voorbeeld om browsernamen voor elke gebruiker op te halen.

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

U zult zien dat de detailkolommen dubbele aanhalingstekens hebben. Als u dubbele aanhalingstekens wilt verwijderen, gebruikt u in plaats daarvan de operator ->>

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

U kunt ook de GROUP BY-clausule en aggregatiefuncties van JSON-gegevens aggregeren. Hier is een voorbeeld om het aantal browsers in onze gegevens te tellen.

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

U ziet de volgende uitvoer

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

Op dezelfde manier kunt u ook JSON-gegevens gebruiken in de WHERE-component. Hier is een voorbeeld om gegevens te selecteren met spend> 100

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

Hopelijk helpt dit artikel je bij het werken met JSON-gegevens in MySQL. Ubiq maakt het eenvoudig om data te visualiseren en te monitoren in realtime dashboards. Probeer Ubiq gratis.

  1. Getallen opmaken als valuta in PostgreSQL

  2. Een primaire sleutel gebruiken met een WithoutRowID

  3. SQL Server 2014 verkennen SELECT INTO Parallelism

  4. Hoe TRIM() werkt in MariaDB