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.