Grundlagen lernen: So verwenden Sie JSON in SQLite

In dieser Anleitung untersuchen wir eine faszinierende Schnittstelle zwischen zwei beliebten Technologien: JSON und SQLite. Die Kenntnis der Verwendung von JSON mit SQLite ist in der modernen Softwareentwicklung wichtig, insbesondere bei der Arbeit mit komplexen Datenstrukturen, die sich möglicherweise nicht vollständig in einer tabellarischen Struktur einfügen lassen. Ob Sie ein erfahrener Entwickler oder ein eifriger Anfänger sind, der Ihr Wissen erweitern möchte, dieses Tutorial hilft Ihnen dabei, zu lernen, wie man JSON in der SQLite-Datenbank verwendet.

Fangen wir an!

Stärkung der modernen Anwendungsdatenverwaltung mit SQLite

SQLite als am weitesten verbreiteter und verwendeter Datenbank-Engine ist eine benutzerfreundliche Datenbank, die keine komplizierte Einrichtung oder Serververbindung erfordert. SQLite ist einfach und anpassungsfähig für verschiedene Anwendungen, was es zu einer bevorzugten Wahl in der Softwareentwicklung gemacht hat. SQLite hat einen kleinen Binär-Fußabdruck, in der Regel weniger als 1 MB, was bedeutet, dass es leichter ist als andere Datenbanken. Darüber hinaus entspricht SQLite vollständig den ACID-Grundsätzen.

Ein weiteres einzigartiges Merkmal von SQLite ist, dass es sich besonders gut für individuelle Anwendungen und internetfähige Geräte wie Smart Home Gadgets eignet, die Teil des Internet der Dinge (IoT) sind. Auch trotz seiner Einfachheit hat SQLite eine starke Beherrschung der Standard-SQL-Sprache. Es kann Dinge wie Transaktionen, Unterabfragen und Trigger handhaben. Somit ist SQLite leicht zu bedienen, aber dennoch sehr mächtig.

Die Fähigkeiten von SQLite erstrecken sich über die einfache Datenspeicherung hinaus. SQLite ist effizient und benutzerfreundlich und bietet Funktionen wie Volltextsuche und Blob-Unterstützung. SQLite bietet auch ein Erweiterungsmechanismus für zusätzliche Funktionalität, wodurch es zu einem anpassungsfähigen Werkzeug in der modernen Software-Ökologie wird.

Fun Fact: Wussten Sie, dass viele Leute SQLite als ‚S-Q-Lite‘ (Sequel-Light) aussprechen, sein Schöpfer, Richard Hipp, es jedoch tatsächlich als ‚S-Q-L-ite‘ (Ess-Que-Ell-ite) wie ein Mineral aussprechen wollte, um seine robuste aber leichte Natur zu betonen?

Warum SQLite in der Welt moderner relationaler Datenbanken hervorsticht

SQLite ist eine bevorzugte Lösung für Szenarien, in denen die Verwendung von voll ausgereiften Client-Server-Datenbanken möglicherweise übertrieben wäre, da es leichtgewichtig und serverlos ist. Da SQLite selbständig ist, hängt es nicht von externen Abhängigkeiten ab, was es sehr zuverlässig macht. SQLite-Datenbanken sind über verschiedene Dateisysteme und Architekturen hinweg portierbar, sodass die Datenmigration in einer SQLite-Datenbank nahezu mühelos ist.

Typische Einsatzgebiete von SQLite erstrecken sich über eine Vielzahl von Bereichen, da es die am weitesten verbreitete Datenbank-Engine überhaupt ist. Beispielsweise ist SQLite die Standardwahl für lokale Persistenz in Anwendungen, insbesondere in Mobilapplikationen. SQLite wird auch häufig für Datenanalyse und Tests verwendet, bei denen seine Klarheit und Leistungsfähigkeit eine erfolgreiche Kombination darstellen. Schließlich ist SQLite eine ideale Wahl für die Datenspeicherung von Websites, wo es Daten von Nutzern, Inhalten der Website und mehr verwalten kann.

Die Leistung von SQLite ist beeindruckend, mit Geschwindigkeiten, die häufig andere berühmte Datenbanken bei den meisten gängigen Operationen übertreffen.

Mit dem ClickHouse-Benchmark-Tool haben wir den Leistungsvergleich führender Datenbanken wie MySQL, PostgreSQL, SQLite und MongoDB bei verschiedenen Abfragen durchgeführt.

Warum die JSON-Verarbeitungsfähigkeiten von SQLite es zu einer herausragenden Wahl für moderne Datenverwaltung machen

Die effiziente Verwaltung unstrukturierter Daten ist eine Herausforderung, mit der sich viele Entwickler konfrontiert sehen. Hier kommt JSON ins Spiel. Als flexibles, schalenloses Datenformat ist JSON nützlich für die Handhabung von Daten, die nicht geradlinig in eine tabellarische Struktur passen.

Indem man JSON-Daten in SQLite speichert, kann man die leistungsstarken Abfragefähigkeiten von SQLite nutzen, um JSON-Daten effizient zu extrahieren und zu manipulieren. Das Schöne an dieser Kombination liegt darin, dass SQLite über integrierte Funktionen verfügt, um JSON-Daten einfach zu verwalten. Darüber hinaus bedeutet die Beliebtheit von JSON als Datenaustauschformat und seine Portabilität, dass JSON-Daten, die in SQLite gespeichert sind, leicht geteilt, migriert oder in verschiedene Systeme exportiert werden können.

SQLite’s JSON-Unterstützung hat sich im Laufe der Zeit weiterentwickelt. Sie wurde zunächst als Erweiterung in der Version 3.9.0 im Jahr 2015 eingeführt, aber spätere Versionen kamen mit integrierter Unterstützung für JSON. SQLite ermöglicht es Ihnen, JSON-Daten mithilfe einer TEXT-Spalte und einer Reihe von JSON-Funktionen wie json(), json_extract(), json_object() und json_array() zu speichern und abzurufen.

Das Verständnis der leistungsstarken Funktionen von SQLite für die JSON-Abfrage

SQLite verwaltet und manipuliert JSON-Daten mithilfe von JSON-Funktionen. Hier sind die zehn wichtigsten JSON-Funktionen in SQLite aufgeführt, als Referenz, und die Verwendung jeder wird im Folgenden anhand eines einfachen SQL-Abfragebeispiels veranschaulicht.

  1. json(): Diese Funktion prüft, ob ein String ein gültiges JSON ist. Wenn ja, gibt die Funktion das gleiche JSON zurück. Wenn nicht, gibt sie NULL zurück.
  2. json_extract(): Diese Funktion extrahiert ein Objekt aus einem JSON-String unter Verwendung eines Pfads.
  3. json_array(): Diese Funktion erstellt ein JSON-Array.
  4. json_array_length(): Diese Funktion gibt die Länge des JSON-Arrays zurück.
  5. json_insert(): Diese Funktion fügt einen JSON-Wert in einen JSON-String ein.
  6. json_object(): Diese Funktion erstellt ein JSON-Objekt.
  7. json_remove(): Diese Funktion entfernt eine Eigenschaft aus dem JSON-String.
  8. json_replace(): Diese Funktion ersetzt einen Wert in einem JSON-String.
  9. json_type(): Diese Funktion gibt den Typ des JSON-Werts zurück (wie INTEGER, REAL, NULL, TRUE, FALSE, TEXT und BLOB).
  10. json_valid(): Diese Funktion prüft, ob ein String ein gültiges JSON ist.

Praktische Beispielreihe zur Verständnis von JSON-Codierungs- und Decodierungsfunktionen in SQLite

In diesem Abschnitt haben wir minimale Beispiele und eine kurze Erklärung für jede der JSON-Funktionen bereitgestellt, die wir im vorherigen Abschnitt aufgelistet haben. Wir verwenden ein Beispiel für JSON-Daten aus dem Dadroit JSON Generator. Hier ist das ursprüngliche JSON, um Ihnen den Kontext zu geben.

Die json()-Funktion in SQLite

Diese Abfrage konvertiert den JSON-Text in ein JSON-Objekt.

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

Das Ergebnis dieser Abfrage wäre wie folgt:

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

Die json_extract()-Funktion in SQLite

Diese Abfrage extrahiert den Name-Wert aus dem JSON-Objekt, indem sie ihn als Pfad verwendet.

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

Das Ergebnis dieser Abfrage wäre wie folgt:

movie_name
Forgotten in the Planet

Die json_array()-Funktion in SQLite

Diese Abfrage erstellt ein neues JSON-Array aus den bereitgestellten Eingaben.

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

Das Ergebnis wäre wie folgt:

array_result
[1,2,3]

Die json_type()-Funktion in SQLite

Diese Abfrage ruft den Datentyp des Year-Werts aus dem JSON-Objekt ab.

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

Das Ergebnis wäre wie folgt:

property_type
integer

Die json_array_length()-Funktion in SQLite

Diese Abfrage zählt die Anzahl der Elemente im Cast-Array im JSON-Objekt.

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

Das Ergebnis wäre wie folgt:

array_length
3

Die json_object()-Funktion in SQLite

Diese Abfrage erstellt ein JSON-Objekt mit den Schlüssel-Wert-Paaren ID und Name.

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

Das Ergebnis wäre wie folgt:

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

Die json_insert()-Funktion in SQLite

Diese Abfrage fügt das Director-Schlüssel-Wert-Attribut in das JSON-Objekt ein.

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

Das Ergebnis wäre wie folgt:

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

Die json_remove()-Funktion in SQLite

Diese Abfrage entfernt das Director-Schlüssel-Wert-Paar aus dem JSON-Objekt.

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

Das Ergebnis wäre wie folgt:

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

Die json_replace()-Funktion in SQLite

Diese Abfrage ersetzt das Year im JSON-Objekt durch den neuen Wert 1971.

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

Das Ergebnis wäre wie folgt:

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

Die json_valid()-Funktion in SQLite

Diese Abfrage überprüft, ob die bereitgestellte Zeichenkette die korrekte Syntax und Struktur für ein gültiges JSON aufweist, und gibt 1 zurück, wenn dies der Fall ist, und 0 andernfalls.

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

Das Ergebnis wäre wie folgt:

result_of_valid
1

Praktische Abfragebeispiele zur Erweiterung von SQL-Abfragen mit JSON-Funktionen in SQLite

Nachdem Sie die Grundlagen von JSON in SQLite kennengelernt haben, werden Ihnen hier weitere Beispiele für einen praktischen Workflow mit JSON-Daten in der SQLite-Datenbank präsentiert, wobei die zuvor erwähnten JSON-Funktionen und die zuvor erwähnten JSON-Daten als Eingabe verwendet werden.

Speichern von JSON-Daten in SQLite mit Einfügeabfragen

Zunächst müssen Sie die JSON in einer SQLite-Datenbank einfügen. Erstellen wir dazu eine Tabelle namens movies mit einem Feld namens data als Textfeld, da Sie JSON in SQLite in einem Textfeld speichern können. Sie werden dieses data Feld verwenden, um die JSON-Werte zu speichern und abzurufen:

CREATE TABLE movies ( data TEXT );

Fügen wir nun unsere JSON in das Feld data der Tabelle movies ein:

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

Um JSON in SQLite zu bearbeiten (ersetzen, einfügen, entfernen usw.), können Sie die Funktionen json_replace(), json_insert() und json_remove() verwenden.

Die folgende Abfrage ersetzt den Namen des Films durch den neuen Wert, wobei die ID 1 ist:

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

Die folgende Abfrage fügt eine neue Eigenschaft als neues Feld in die zuvor gespeicherten JSON-Daten in der Zeile ein:

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

Die folgende Abfrage entfernt die Runtime-Eigenschaft aus den zuvor gespeicherten JSON-Daten in der Zeile:

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

JSON-Daten aus SQLite extrahieren

Um JSON-Daten aus SQLite abzurufen, können Sie die json_extract()-Funktion oder den Kurzschreibweise-Operator -> verwenden:

Wählen Sie den Namen des Films:

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

Oder mit dem ->-Kurzschreibweise-Operator:

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

Rufe die Liste der Genres ab:

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

Rufe den ersten Schauspieler aus der Cast-Liste ab:

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

Extrahieren Sie die Year und Rate:

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

Schlussfolgerungen

Gut gemacht, dass du diese Reise abgeschlossen hast! Du hast gelernt, wie sich der JSON-Datentyp und der SQLite-Datenbank zusammenarbeiten können. SQLite ist ein nützliches Werkzeug, das du in deinem Werkzeugkoffer haben solltest. Es ist einfach, aber dennoch mächtig und leicht zu bedienen. Obwohl es klein ist, ist es voll von nützlichen Funktionen.

Ganz einfach ausgedrückt, ermöglicht es uns SQLite, JSON-Daten mithilfe einer Textspalte und einigen JSON-Funktionen zu speichern und abzurufen. Diese Funktionen erlauben es uns, die JSON-Daten in unserer SQLite-Datenbank zu erkunden, zu analysieren und zu verändern. SQLite bietet viele Werkzeuge zur Verwaltung von JSON-Daten, von dem Hinzufügen und Ändern von JSON-Daten bis hin zum Abrufen für verschiedene Zwecke. Wir haben zehn Haupt-JSON-Funktionen in SQLite behandelt, die die Handhabung von JSON-Daten vereinfachen. Dann haben wir uns einige Beispiele für SQL-Abfragen angesehen, bei denen diese JSON-Funktionen in SQLite verwendet wurden.

Denk daran: Gutes Arbeiten mit JSON in SQLite ist eine Fähigkeit, die gründlicher geübt werden muss. Sei also nicht schüchtern – tauche ein, experimentiere und lerne. Am Ende, wenn du dieser Anleitung geholfen hast, teile sie gerne. Viel Spaß bei deiner Programmierreise!

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