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.