Basisleren: Hoe JSON in SQLite te gebruiken

In deze gids verkennen we een fascinerende kruising tussen twee populaire technologieën: JSON en SQLite. Het is belangrijk om te weten hoe JSON te gebruiken met SQLite in moderne softwareontwikkeling, vooral bij het omgaan met complexe gegevensstructuren die niet volledig passen in een tabulaire structuur. Of je nu een ervaren ontwikkelaar bent of een ijverige beginner bent die je kennis wilt uitbreiden, deze tutorial zal je helpen om te beginnen met het leren hoe JSON te gebruiken in de SQLite-database.

Laten we beginnen!

Versterking van moderne toepassingsgegevensbeheer met SQLite

SQLite als de meest wijdverspreide en gebruikte database-engine is een gebruiksvriendelijke database die geen ingewikkelde setup of serververbinding vereist. SQLite is eenvoudig en aanpasbaar voor diverse toepassingen, wat het tot een standaardkeuze in softwareontwikkeling heeft gemaakt. SQLite heeft een kleine binaire voetafdruk, meestal minder dan 1 MB, wat betekent dat het lichter is dan andere databases. Bovendien voldoet SQLite volledig aan ACID principes.

Nog een uniek kenmerk van SQLite is dat het uitstekend geschikt is voor individuele applicaties en internetverbonden apparaten zoals slimme thuisgadgets, die deel uitmaken van de Internet of Things (IoT). Ook al is het eenvoudig, SQLite heeft toch een sterke controle over de standaard SQL-taal. Het kan dingen aanpakken zoals transacties, sub-query’s en triggers. Dus, SQLite is gemakkelijk te gebruiken, maar toch behoorlijk krachtig.

De mogelijkheden van SQLite strekken zich uit verder dan alleen het opslaan van eenvoudige gegevens. SQLite is efficiënt en gebruiksvriendelijk, met functies zoals volledig tekstzoeken en ondersteuning voor blob-gegevens. SQLite biedt ook een uitbreidingsmechanisme voor extra functionaliteit, waardoor het een aanpasbaar hulpmiddel is in het moderne software-ecosysteem.

Leuk feit: Wist je dat, terwijl veel mensen SQLite uitspreken als ‘S-Q-Lite’ (sequel-light), de maker ervan, Richard Hipp, het eigenlijk bedoeld heeft om uit te spreken als ‘S-Q-L-ite’ (ess-que-ell-ite), net als een mineraal, waarmee de robuuste maar lichte aard wordt benadrukt?

Waarom SQLite uitblinkt in het domein van moderne relationele databases

SQLite is een eerste keuze-oplossing voor situaties waarin volledig uitgevoerde client-server databases misschien overbodig zijn, aangezien het lichtgewicht en zonder server is. Omdat SQLite zelfstandig is, is het niet afhankelijk van externe afhankelijkheden, waardoor het zeer betrouwbaar is. SQLite databases zijn overdraagbaar tussen verschillende bestandssystemen en architectuur, dus data migratie in de SQLite database is moeiteloos.

SQLite’s typische gebruiksvoorbeelden zijn over een verscheidenheid aan domeinen, aangezien het de meest wijdverspreide database engine ter wereld is. Bijvoorbeeld, SQLite is een standaard keuze voor lokale persistentie in applicaties, vooral mobiele apps. SQLite wordt ook veel gebruikt voor data analyse en testen, waar zijn duidelijkheid en kracht een winnende combinatie zijn. Tot slot is SQLite een ideale keuze voor website data opslag, waar het gebruikers data, site inhoud en meer kan beheren.

De prestaties van SQLite zijn indrukwekkend, met snelheid die vaak andere beroemde databases overtreft voor de meeste gebruikelijke operaties.

Met behulp van het ClickHouse benchmark-gereedschap hebben we de prestaties van vooraanstaande databases vergeleken: MySQL, PostgreSQL, SQLite en MongoDB, bij een verscheidenheid aan query’s.

Waarom SQLite’s JSON-behandelingsmogelijkheden het een uitstekende keuze maken voor moderne databeheer

Het efficiënt beheren van ongestructureerde gegevens is een uitdaging waar veel ontwikkelaars tegenaan lopen. Daar komt JSON om de hoek kijken. Als een flexibel, schema-loos gegevensformaat is JSON nuttig voor het afhandelen van gegevens die niet netjes in een tabelstructuur passen.

Door JSON-gegevens in SQLite op te slaan, kunt u SQLite’s krachtige querycapaciteiten inzetten om uw JSON-gegevens efficiënt te extraheren en te manipuleren. De schoonheid van deze combinatie zit hem in het feit dat SQLite ingebouwde functies heeft om JSON-gegevens eenvoudig te beheren. Bovendien betekent JSON’s populariteit als gegevensuitwisselingsformaat en zijn draagbaarheid dat JSON-gegevens die in SQLite zijn opgeslagen, gemakkelijk kunnen worden gedeeld, overgebracht of geëxporteerd naar verschillende systemen.

SQLite’s JSON-ondersteuning is in de loop der tijd gegroeid. Het werd voor het eerst geïntroduceerd als een extensie in versie 3.9.0, uitgebracht in 2015, maar latere versies hadden ingebouwde ondersteuning voor JSON. SQLite stelt u in staat om JSON-gegevens op te slaan en op te halen met behulp van een TEXT-kolom en een reeks JSON-functies, zoals json(), json_extract(), json_object(), en json_array().

Inzicht in SQLite’s krachtige functies voor JSON-query’s

SQLite beheert en manipuleert JSON-gegevens met behulp van JSON-functies. Hier zijn de top 10 JSON-functies in SQLite, vermeld als referentie, en het gebruiksvoorbeeld van elk wordt geïllustreerd met een eenvoudige SQL-query in de volgende sectie.

  1. json(): Deze functie controleert of een string een geldig JSON is. Indien dat zo is, retourneert de functie hetzelfde JSON. Zo niet, retourneert het NULL.
  2. json_extract(): Deze functie haalt een object uit een JSON-string op basis van een pad.
  3. json_array(): Deze functie creëert een JSON-array.
  4. json_array_length(): Deze functie geeft de lengte van de JSON-array.
  5. json_insert(): Deze functie voegt een JSON-waarde in een JSON-string toe.
  6. json_object(): Deze functie creëert een JSON-object.
  7. json_remove(): Deze functie verwijdert een eigenschap uit de JSON-string.
  8. json_replace(): Deze functie vervangt een waarde in een JSON-string.
  9. json_type(): Deze functie geeft het type van de JSON-waarde (zoals INTEGER, REAL, NULL, TRUE, FALSE, TEXT, en BLOB).
  10. json_valid(): Deze functie controleert of een string een geldig JSON is.

Praktische reeks voorbeelden voor het begrijpen van JSON-codering en -decodering functies in SQLite

In deze sectie hebben we minimale voorbeelden en een korte uitleg gegeven voor elk van de JSON-functies die we in de vorige sectie hebben beschreven. We gebruiken een voorbeeld van JSON-gegevens uit de Dadroit JSON generator. Hier is de oorspronkelijke JSON om je context te geven.

De json() Functie in SQLite

Deze query converteert de JSON-tekst naar een JSON-object.

SELECT
    json ( '{"ID":1,"Name":"Forgotten in the Planet","Year":1970}' ) AS json_object;

Het resultaat van deze query zou er zo uitzien:

json_object
{“ID”:1,”Name”:”Forgotten in the Planet”,”Year”:1970}

De json_extract() Functie in SQLite

Deze query extraheert de Name waarde uit het JSON-object door het als pad te gebruiken.

SELECT json_extract('{"ID":1,"Name":"Forgotten in the Planet","Year":1970}', '$.Name') AS movie_name;

Het resultaat van deze query zou er zo uitzien:

movie_name
Forgotten in the Planet

De json_array() Functie in SQLite

Deze query maakt een nieuwe JSON-array van de verstrekte invoer.

SELECT
    json_array ( 1, 2, 3 ) AS array_result;

Het resultaat zou er zo uitzien:

array_result
[1,2,3]

De json_type() Functie in SQLite

Deze query haalt de gegevenstype van de Year waarde uit het JSON-object.

SELECT
    json_type ( '{"ID":1,"Name":"Forgotten in the Planet","Year":1970}', '$.Year' ) AS property_type;

Het resultaat zou er zo uitzien:

property_type
integer

De json_array_length() Functie in SQLite

Deze query telt het aantal elementen in de Cast array in het JSON-object.

SELECT
    json_array_length ( '{"Genre":["Comedy","Crime"],"Cast":["Adrian Gratianna","Tani O''Hara","Tessie Delisle"]}', '$.Cast' ) AS array_length;

Het resultaat zou er zo uitzien:

array_length
3

De json_object() Functie in SQLite

Deze query creëert een JSON-object met de ID en Name sleutel-waardeparen.

SELECT
    json_object ( 'ID', 1, 'Name', 'Forgotten in the Planet' ) AS result;

Het resultaat zou er zo uit zien:

result
{“ID”:1,”Name”:”Forgotten in the Planet”}

De json_insert() functie in SQLite

Deze query voegt de Director sleutel-waarde-eigenschap toe aan het JSON-object.

SELECT
    json_insert ( '{"ID":1,"Name":"Forgotten in the Planet","Year":1970}', '$.Director', 'Henrie Randell Githens' ) AS insert_movie;

Het resultaat zou er zo uit zien:

insert_movie
{“ID”:1,”Name”:”Forgotten in the Planet”,”Year”:1970,”Director”:”Henrie Randell Githens”}

De json_remove() functie in SQLite

Deze query verwijdert de Director sleutel-waarde-paar uit het JSON-object.

SELECT
    json_remove ( '{"ID":1,"Name":"Forgotten in the Planet","Year":1970,"Director":"Henrie Randell Githens"}', '$.Director' ) AS result_of_remove;

Het resultaat zou er zo uit zien:

result_of_remove
{“ID”:1,”Name”:”Forgotten in the Planet”,”Year”:1970}

De json_replace() functie in SQLite

Deze query vervangt de Year in het JSON-object door de nieuwe waarde 1971.

SELECT
     json_replace ( '{"ID":1,"Name":"Forgotten in the Planet","Year":1970,"Director":"Henrie Randell Githens"}', '$.Year', 1971 ) AS result_of_replace;

Het resultaat zou er zo uit zien:

result_of_replace
{“ID”:1,”Name”:”Forgotten in the Planet”,”Year”:1971,”Director”:”Henrie Randell Githens”}

De json_valid() functie in SQLite

Deze query controleert of de meegegeven string de juiste syntaxis en structuur heeft die nodig is voor een geldig JSON, en geeft 1 terug als dat zo was en 0 anders.

SELECT
     json_valid ( '{"ID":1,"Name":"Forgotten in the Planet","Year":1970,"Director":"Henrie Randell Githens"}' ) AS result_of_valid;

Het resultaat zou er zo uit zien:

result_of_valid
1

Praktische queryvoorbeelden voor verbeterde SQL-query’s met behulp van JSON-functies in SQLite

Nu je hebt geleerd over de basis van JSON in SQLite, worden hier enkele meer voorbeelden van een praktische werkstroom met JSON-gegevens in de SQLite-database gepresenteerd, met behulp van eerder genoemde JSON-functies, en de eerder genoemde JSON-gegevens als invoer.

Opslaan van JSON-gegevens in SQLite met insert-query’s

Eerst moet je de JSON invoegen in een SQLite-database. Laten we een tabel maken met de naam movies met één veld genaamd data als een tekstveld, aangezien je JSON in SQLite in een tekstveld kunt opslaan. Je zult dit data veld gebruiken om de JSON-waarden op te slaan en op te vragen:

CREATE TABLE movies ( data TEXT );

Vervolgens laten we onze JSON invoegen in het veld data van de tabel movies:

INSERT INTO movies ( data )
 VALUES
     ( '{"ID":1,"Name":"Forgotten in the Planet","Year":1970,"Genre":["Comedy","Crime"],"Director":"Henrie Randell Githens","Cast":["Adrian Gratianna","Tani OHara","Tessie Delisle"],"Runtime":90,"Rate":7.0}' );

Om JSON in SQLite te bewerken (vervangen, invoegen, verwijderen, enz.), kun je de functies json_replace(), json_insert() en json_remove() gebruiken.

De volgende query vervangt de naam van de film door de nieuwe waarde waar de ID gelijk is aan 1:

UPDATE movies
 SET data = json_replace ( data, '$.Name', 'Found in the Universe' )
 WHERE
     json_extract ( data, '$.ID' ) = 1;

De volgende query voegt een nieuw eigenschap als een nieuw veld toe aan de eerder opgeslagen JSON-gegevens in de rij:

UPDATE movies
 SET data = json_insert ( data, '$.Country', 'USA' )
 WHERE
     json_extract ( data, '$.ID' ) = 1;

De volgende query verwijdert het Runtime-eigenschap uit de eerder opgeslagen JSON-gegevens in de rij:

UPDATE movies
 SET data = json_remove ( data, '$.Runtime' )
 WHERE
     json_extract ( data, '$.ID' ) = 1;

JSON-gegevens uit SQLite extraheren

Om JSON-gegevens uit SQLite op te vragen, kun je de json_extract() of de afkortingsoperator -> gebruiken:

Selecteer de naam van de film:

SELECT
     json_extract ( data, '$.Name' )
 FROM
     movies
 WHERE
     json_extract ( data, '$.ID' ) = 1;

Of met behulp van de -> afkortingsoperator:

SELECT
     data -> '$.Name'
 FROM
     movies
 WHERE
     data -> '$.ID' = 1;

Vraag de lijst met genres op:

SELECT
     json_extract ( data, '$.Genre' )
 FROM
     movies
 WHERE
     json_extract ( data, '$.ID' ) = 1;

Vraag de eerste acteur op uit de Cast-lijst:

SELECT
     json_extract ( data, '$.Cast[0]' )
 FROM
     movies
 WHERE
     json_extract ( data, '$.ID' ) = 1;

Extraheer de Year en Rate:

SELECT
     json_extract ( data, '$.Year' ) AS Year,
     json_extract ( data, '$.Rate' ) AS Rate
 FROM
     movies
 WHERE
     json_extract ( data, '$.ID' ) = 1;

Concluderende inzichten

Goed gedaan met het voltooien van deze reis! Je hebt geleerd hoe het JSON-gegevens type en de SQLite-database kunnen samenwerken. SQLite is een handig hulpmiddel om in je gereedschapskist te hebben. Het is eenvoudig maar krachtig en gemakkelijk te gebruiken. Hoewel het klein is, zit het vol met nuttige functies.

Kort gezegd, SQLite stelt ons in staat om JSON-gegevens op te slaan en op te vragen met behulp van een tekstkolom en enkele JSON-functies. Deze functies stellen ons in staat om de JSON-gegevens in onze SQLite-database te verkennen, te analyseren en te wijzigen. SQLite biedt veel hulpmiddelen om JSON-gegevens te beheren, van het toevoegen en wijzigen van JSON-gegevens tot het ophalen ervan voor verschillende doeleinden. We hebben tien primaire JSON-functies in SQLite behandeld die de handhabing van JSON-gegevens vereenvoudigen. Vervolgens hebben we enkele voorbeelden van SQL-query’s bekeken die gebruik maken van deze JSON-functies in SQLite.

Onthoud: goed worden in het gebruik van JSON met SQLite is een vaardigheid die meer grondig moet worden geoefend. Dus, wees niet verlegen – duik erin, experimenteer en leer. Als je deze gids behulpzaam vond, aarzel dan niet om hem te delen. Geniet van je programmeerreis!

Source:
https://dzone.com/articles/learning-the-basics-how-to-use-json-in-sqlite