MySQL-Operationen: Operationen mit JSON-Datentyp

MySQL-Operationen: Operationen mit JSON-Datentyp

Im vorherigen Artikel haben wir das ausführliche Beispiel für MySQL-Datenspeicherprozedurparameter vorgestellt. Heute werfen wir einen Blick auf den relevanten Inhalt von MySQL-Operationen für den JSON-Datentyp.

Überblick

Seit Version 5.7.8 unterstützt MySQL die Speicherung und Abfrage von JSON-strukturierten Daten, was zeigt, dass MySQL auch ständig dazulernt und die Vorteile von NoSQL-Datenbanken hinzufügt. Aber MySQL ist letztlich eine relationale Datenbank und bei der Verarbeitung unstrukturierter Daten wie JSON immer noch umständlich.

Erstellen einer Tabelle mit einem JSON-Feld

Erstellen Sie zunächst eine Tabelle, die ein Feld im JSON-Format enthält:

CREATE TABLE Tabellenname (
  id INT NICHT NULL AUTO_INCREMENT, 
  json_col JSON,
  PRIMÄRSCHLÜSSEL(id)
);

Achten Sie in der obigen Anweisung auf das Feld json_col, das den Datentyp als JSON angibt.

Einfügen einfacher JSON-Daten

EINFÜGEN IN
  Tabellenname (json_col) 
WERTE
  ('{"Stadt": "Galle", "Beschreibung": "Die verdammt beste Stadt der Welt"}');
  

Achten Sie in der obigen SQL-Anweisung auf den Teil nach VALUES. Da doppelte Anführungszeichen erforderlich sind, um Zeichenfolgen in Daten im JSON-Format zu identifizieren, muss der Inhalt nach VALUES in einfache Anführungszeichen gesetzt werden.

Einfügen komplexer JSON-Daten

INSERT INTO Tabelle (Spalte) 
VALUES('{"opening":"Sicilian","variations":["pelikan","dragon","najdorf"]}');

Hier haben wir ein JSON-Array eingefügt. Achten Sie vor allem auf das Problem der einfachen und doppelten Anführungszeichen.

Ändern von JSON-Daten

Im vorherigen Beispiel haben wir mehrere JSON-Daten eingefügt. Aber wie können wir einen bestimmten Inhalt in den JSON-Daten ändern? Wenn wir beispielsweise ein Element zum Variationen-Array hinzufügen, können wir Folgendes tun:

UPDATE myjson SET dict=JSON_ARRAY_APPEND(dict,'$.variations','scheveningen') WHERE id = 2;

In dieser SQL-Anweisung stellt $ das JSON-Feld dar, der Punkt wird zum Indizieren des Variationenfelds verwendet und dann wird mit der Funktion JSON_ARRAY_APPEND ein Element hinzugefügt. Nun führen wir die Abfrage aus:

Wählen Sie * aus myjson

Das Ergebnis ist:

+----+--------------------------------------------------------------------------+
| Ich würde | Wörterbuch |
+---+-----------------------------------------------------------------------------------------+
| 2 | {"Eröffnung": "Sizilianisch", "Variationen": ["Pelikan", "Drache", "Najdorf", "Scheveningen"]} |
+----+--------------------------------------------------------------------------+
1 Zeile im Satz (0,00 Sek.)

Weitere Informationen zum Abrufen von JSON-Daten in MySQL finden Sie unter dem offiziellen Link JSON Path Syntax

Index erstellen

Die Daten im JSON-Format von MySQL können nicht direkt indiziert werden. Sie können dies jedoch umgehen, indem Sie die zu durchsuchenden Daten in eine separate Datenspalte aufteilen und dann einen Index für dieses Feld erstellen. Hier ist das offizielle Beispiel:

mysql> TABELLE ERSTELLEN jemp (
  -> c JSON,
  -> g INT wird immer als (c->"$.id") generiert,
  -> INDEX i (g)
  -> );
Abfrage OK, 0 Zeilen betroffen (0,28 Sek.)

mysql> INSERT INTO jemp (c) WERTE
   > ('{"id": "1", "name": "Fred"}'), ('{"id": "2", "name": "Wilma"}'),
   > ('{"id": "3", "name": "Barney"}'), ('{"id": "4", "name": "Betty"}');
Abfrage OK, 4 Zeilen betroffen (0,04 Sek.)
Datensätze: 4 Duplikate: 0 Warnungen: 0

mysql> SELECT c->>"$.name" AS name
   > VON jemp, WO g > 2;
+--------+
| Name |
+--------+
| Barney |
| Betty |
+--------+
2 Zeilen im Satz (0,00 Sek.)

mysql> ERKLÄREN SELECT c->>"$.name" AS name
   > VON jemp WO g > 2\G
*************************** 1. Reihe ***************************
      ID: 1
 select_type: EINFACH
    Tabelle: jemp
  Partitionen: NULL
     Typ: Bereich
mögliche Schlüssel: i
     Taste: i
   Schlüssellänge: 5
     Ref: NULL
     Reihen: 2
   gefiltert: 100,00
    Extra: Verwenden von „where“
1 Zeile im Satz, 1 Warnung (0,00 Sek.)

mysql> WARNUNGEN ANZEIGEN\G
*************************** 1. Reihe ***************************
 Level: Hinweis
  Code: 1003
Nachricht: /* select#1 */ select json_unquote(json_extract(`test`.`jemp`.`c`,'$.name'))
AS `Name` von `test`.`jemp`, wobei (`test`.`jemp`.`g` > 2)
1 Zeile im Satz (0,00 Sek.)

Dieses Beispiel ist sehr einfach. Es nimmt das ID-Feld im JSON-Feld und trennt es in Feld g. Dann wird ein Index für Feld g erstellt und die Abfragebedingung gilt auch für Feld g.

Konvertieren Sie die Zeichenfolge in das JSON-Format

Konvertieren Sie eine Zeichenfolge im JSON-Format in den JSON-Typ von MySQL:

SELECT CAST('[1,2,3]' als JSON) ;
SELECT CAST('{"opening":"Sicilian","variations":["pelikan","dragon","najdorf"]}' als JSON);

Alle MySQL JSON-Funktionen

Name Beschreibung
JSON_APPEND() Daten an JSON-Dokument anhängen
JSON_ARRAY() JSON-Array erstellen
JSON_ARRAY_APPEND() Daten an JSON-Dokument anhängen
JSON_ARRAY_INSERT() In JSON-Array einfügen -> Wert aus JSON-Spalte nach Auswertung des Pfads zurückgeben; entspricht JSON_EXTRACT().
JSON_CONTAINS() Ob ein JSON-Dokument ein bestimmtes Objekt unter dem Pfad enthält
JSON_CONTAINS_PATH() Ob das JSON-Dokument Daten im Pfad enthält
JSON_DEPTH() Maximale Tiefe des JSON-Dokuments
JSON_EXTRACT() Daten aus JSON-Dokument zurückgeben ->> Wert aus JSON-Spalte zurückgeben, nachdem Pfad ausgewertet und Anführungszeichen im Ergebnis entfernt wurden; entspricht JSON_UNQUOTE(JSON_EXTRACT()).
JSON_INSERT() Daten in JSON-Dokument einfügen
JSON_KEYS() Array von Schlüsseln aus einem JSON-Dokument
JSON_LENGTH() Anzahl der Elemente im JSON-Dokument
JSON_MERGE() JSON-Dokumente zusammenführen und dabei doppelte Schlüssel beibehalten. Veraltetes Synonym für JSON_MERGE_PRESERVE()
JSON_MERGE_PRESERVE() JSON-Dokumente zusammenführen und dabei doppelte Schlüssel beibehalten
JSON_OBJECT() JSON-Objekt erstellen
JSON_QUOTE() Zitat JSON-Dokument
JSON_REMOVE() Daten aus JSON-Dokument entfernen
JSON_REPLACE() Werte im JSON-Dokument ersetzen
JSON_SEARCH() Pfad zum Wert im JSON-Dokument
JSON_SET() Daten in JSON-Dokument einfügen
JSON_TYPE() Typ des JSON-Wertes
JSON_UNQUOTE() Anführungszeichen für JSON-Wert entfernen
JSON_VALID() Ob der JSON-Wert gültig ist

Zusammenfassen

Dies ist der gesamte Inhalt dieses Artikels zur detaillierten Erläuterung von JSON-Datentypoperationen in MySQL. Ich hoffe, er wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf diese Site verweisen: Detaillierte Beispiele für MySQL-Datenspeicherprozessparameter, kurze Beschreibung des Unterschieds zwischen Redis und MySQL, mehrere wichtige MySQL-Variablen usw. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht und weisen Sie darauf hin. Der Herausgeber wird Ihnen rechtzeitig antworten und Änderungen vornehmen und sich bemühen, den meisten Programmierbegeisterten und -arbeitern bessere Artikel und ein besseres Leseerlebnis zu bieten. Hier sind einige Bücher zum MySQL-Betrieb zu Ihrer Information:

MySQL-Datenbankanwendung vom Anfänger bis zum Meister (2. Ausgabe) PDF-gescannte Version

https://www.jb51.net/books/361239.html

MySQL5 Definitive Guide (3. Ausgabe) Chinesische Version PDF-gescannte Version

https://www.jb51.net/books/367031.html

Ich hoffe, es gefällt Ihnen. Weitere spannende Inhalte finden Sie unter: https://www.jb51.net/

Das könnte Sie auch interessieren:
  • Kompatibilitätsvergleich zwischen PostgreSQL- und MySQL-Datentypen
  • Prinzipien der MySQL-Datentypoptimierung
  • Detaillierte Erklärung der Datentypen und Schemaoptimierung in MySQL
  • Beschreibung der Entsprechung zwischen MyBatis JdbcType und Oracle- und MySql-Datentypen
  • Detaillierte Analyse des MySQL-Datentyps DECIMAL
  • Detaillierte Erklärung der Prinzipien und der Verwendung von MySQL-Datentypen und Feldattributen
  • Detaillierte Erläuterung der grundlegenden Datentypen in mysql8.0.19
  • Einführung in MySQL (Teil 2) Detaillierte Erklärung der Datenbank-Datentypen
  • Detaillierte Erklärung der Bedeutung von N und M im MySQL-Datentyp DECIMAL(N,M)
  • Vollständige Analyse der MySQL-Datentypen

<<:  Einrichten freigegebener Ordner in der virtuellen Ubuntu-Maschine von VMWare14.0.0

>>:  Einrichten der React-Native-Umgebung und grundlegende Einführung

Artikel empfehlen

Lösung für die Upload-Einschränkung von Element-ui-Uploaddateien

Frage Die Angabe des Typs der hochgeladenen Datei...

Vue3 kapselt die Textskelett-Effektkomponente der Seitennavigation

Vue3-Projektkapselung Seitennavigation Textskelet...

25 neue nützliche Icon-Sets zum Download im Ausland

1. E-Commerce-Symbole 2. Symbol Süßigkeiten 2 3. ...

Detaillierte Erklärung der Stammverzeichniseinstellungen in nginx.conf

Bei der Konfiguration von nginx.conf treten immer...

Ein einfaches Beispiel für eine gemeinsame MySQL-Tabellenabfrage

MySql verwendet verknüpfte Tabellenabfragen, die ...

Interpretation und Verwendung verschiedener React-State-Manager

Zunächst müssen wir wissen, was ein Zustandsmanag...

Docker-Installation Nginx Tutorial Implementierung Abbildung

Lassen Sie uns Nginx installieren und ausprobiere...

So verwenden Sie Vuex in einem Vue-Projekt

Inhaltsverzeichnis Was ist Vuex? Vuex-Nutzungszyk...

Spezifische Verwendung von MySQL-Fensterfunktionen

Inhaltsverzeichnis 1. Was ist eine Fensterfunktio...

Wie setze ich eine Unterstreichung in HTML? So unterstreiche ich Text in HTML

Früher bestand das Unterstreichen in HTML darin, ...

CSS3-Bézierkurven-Beispiel: Erstellen von Link-Hover-Animationseffekten

Wir verwenden animierte CSS3-Übergänge, um einen ...