Details zur Verwendung des JSON-Typs in MySQL 5.7

Details zur Verwendung des JSON-Typs in MySQL 5.7

JSON ist ein leichtes Datenaustauschformat, das ein sprachunabhängiges Textformat verwendet, das XML ähnelt, aber einfacher als XML sowie leichter zu lesen und zu schreiben ist. Es lässt sich für Maschinen einfacher analysieren und generieren und reduziert die Netzwerkbandbreite bei der Übertragung.

Das Format von JSON ist sehr einfach: Name/Schlüssel-Wert. In früheren MySQL-Versionen wurde zur Implementierung eines solchen Speichers entweder VARCHAR oder TEXT großer Text verwendet. Nach der Veröffentlichung von MySQL 5.7 wurden der JSON-Datentyp sowie das Abrufen und andere Funktionsparsing dieses Typs speziell entwickelt. Sehen wir uns zunächst den JSON-Zugriff in älteren MySQL-Versionen an.

Beispiel einer Tabellenstruktur:

Tabelle erstellen json_test( 
Ich würde INT, 
person_desc TEXT 
)ENGINE INNODB;

Lassen Sie uns einen Datensatz einfügen:

NSERT INTO json_test VALUES (1,'{ 
  "Programmierer": [{ 
    "Vorname": "Brett", 
    "Nachname": "McLaughlin", 
    "E-Mail": "aaaa" 
  }, { 
    "Vorname": "Jason", 
    "Nachname": "Jäger", 
    "E-Mail": "bbbb" 
  }, { 
    "Vorname": "Elliotte", 
    "Nachname": "Harold", 
    "E-Mail": "cccc" 
  }], 
  "Autoren": [{ 
    "Vorname": "Isaac", 
    "Nachname": "Asimov", 
    "Genre": "Science-Fiction" 
  }, { 
    "Vorname": "Tad", 
    "Nachname": "Williams", 
    "Genre": "Fantasie" 
  }, { 
    "Vorname": "Frank", 
    "Nachname": "Peretti", 
    "Genre": "christliche Fiktion" 
  }], 
  "Musiker": [{ 
    "Vorname": "Eric", 
    "Nachname": "Clapton", 
    "Instrument": "Gitarre" 
  }, { 
    "Vorname": "Sergei", 
    "Nachname": "Rachmaninow", 
    "Instrument": "Klavier" 
  }] 
}');

Wenn wir auf einen solchen Speicher im JSON-Format stoßen, können wir im Allgemeinen nur diesen Datensatz herausnehmen und an eine Anwendung übergeben, die ihn analysiert.

Jetzt ändern wir in MySQL 5.7 die folgende Tabellenstruktur:

ALTER TABLE json_test MODIFY person_desc json;

Schauen wir uns zunächst die Schlüssel der eingefügten JSON-Daten an:

mysql> SELECT id,json_keys(person_desc) als "Schlüssel" FROM json_test\G 
*************************** 1. Reihe *************************** 
 ID: 1 
Schlüssel: ["Autoren", "Musiker", "Programmierer"] 
 Zeile im Satz (0,00 Sek.)

Wir sehen, dass es drei Schlüsselfaktoren gibt, nämlich Autoren, Musiker und Programmierer. Suchen Sie nun einen SCHLÜSSEL und erhalten Sie den entsprechenden Wert:

mysql> SELECT json_extract(AUTHORS,'$.lastName[0]') AS 'name', AUTHORS FROM 
  -> ( 
  -> Wählen Sie id, json_extract (person_desc, '$.authors[0][0]') als "Autoren" aus json_test 
  -> UNION ALLE 
  -> Wählen Sie id, json_extract (person_desc, '$.authors[1][0]') als "Autoren" aus json_test 
  -> UNION ALLE 
  -> Wählen Sie id, json_extract (person_desc, '$.authors[2][0]') als "Autoren" aus json_test 
  -> ) ALS T1 
  -> ORDER BY NAME DESC\G 
*************************** 1. Reihe *************************** 
  Name: "Williams" 
AUTOREN: {"Genre": "Fantasy", "Nachname": "Williams", "Vorname": "Tad"} 
*************************** 2. Reihe *************************** 
  Name: "Peretti" 
AUTOREN: {"genre": "christianfiction", "nachName": "Peretti", "vorName": "Frank"} 
*************************** 3. Reihe *************************** 
  Name: "Asimov" 
AUTOREN: {"Genre": "Science-Fiction", "Nachname": "Asimov", "Vorname": "Isaac"} 
3 Zeilen im Satz (0,00 Sek.)

Lassen Sie uns nun die detaillierten Werte auflisten:

mysql> AUSWÄHLEN 
  -> json_extract(AUTHORS,'$.firstName[0]') AS "Vorname", 
  -> json_extract(AUTHORS,'$.lastName[0]') AS "Nachname", 
  -> json_extract(AUTOREN,'$.genre[0]') AS "Genre" 
  -> VON 
  -> ( 
  -> Wählen Sie id, json_extract (person_desc, '$.authors[0]') als "Autoren" aus json 
_prüfen 
  -> ) AS T\G 
*************************** 1. Reihe *************************** 
Vorname: "Isaac" 
 Nachname: "Asimov" 
  Genre: "Science-Fiction" 
 Zeile im Satz (0,00 Sek.)

Lassen Sie uns weiter demonstrieren, wie alle Objekte gelöscht werden, die den KEY-Autoren entsprechen.

mysql> AKTUALISIEREN json_test 
  -> SET person_desc = json_remove(person_desc,'$.authors')\G 
Abfrage OK, 1 Zeile betroffen (0,01 Sek.) 
Übereinstimmende Zeilen: 1 Geändert: 1 Warnungen: 0

Ich habe nach dem entsprechenden SCHLÜSSEL gesucht und festgestellt, dass er gelöscht wurde.

mysql> Wählen Sie json_contains_path(person_desc,'alle','$.authors') als Autoren_existieren 
s VON json_test_G 
*************************** 1. Reihe *************************** 
Autoren_existieren: 0 
 Zeile im Satz (0,00 Sek.)

Zusammenfassend lässt sich sagen, dass MySQL 5.7 zwar begonnen hat, den JSON-Datentyp zu unterstützen, ich jedoch schlage vor, dass Sie, wenn Sie ihn verwenden möchten, solche Werte am besten herausnehmen und sie dann im Anwendungsabschnitt berechnen. Schließlich wird die Datenbank zur Verarbeitung einfacher Daten verwendet.

Zusammenfassen

Oben finden Sie eine ausführliche Erklärung zur Verwendung des vom Herausgeber eingeführten MySQL 5.7-JSON-Typs. Ich hoffe, dass sie für alle hilfreich sein wird. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!

Das könnte Sie auch interessieren:
  • Grundlegender JSON-Betriebsleitfaden in MySQL 5.7
  • Anweisungen zur Verwendung von JSON-Operationsfunktionen in Mysql5.7
  • Eine kurze Erläuterung zum Abrufen des JSON-Formats in MySQL 5.7
  • So fragen Sie JSON in der Datenbank in MySQL 5.6 und darunter ab
  • Detaillierte Erläuterung der JSON-Serienoperationsfunktionen in MySQL
  • MySQL-Operationen: Operationen mit JSON-Datentyp
  • MySQL-Einfügungsproblem bei JSON
  • Detailliertes Beispiel für die JSON-Analyse mit MySQL (5.6 und darunter)
  • Beispielanalyse der Verwendung des neuen JSON-Feldtyps in MySQL 5.7

<<:  Schritte für Docker zum Erstellen eines eigenen lokalen Image-Repositorys

>>:  Detailliertes Installationstutorial von Docker unter CentOS

Artikel empfehlen

Detaillierte Erklärung zu Drag-Time und Drag-Case in JavaScript

Inhaltsverzeichnis DragEvent-Schnittstelle Übersi...

Vue Router lädt verschiedene Komponenten je nach Hintergrunddaten

Inhaltsverzeichnis Anforderungen aus der Projektp...

So erkennen Sie die Dateisystemintegrität basierend auf AIDE in Linux

1. HILFE AIDE (Advanced Intrusion Detection Envir...

Docker generiert Bilder über Container und übermittelt DockerCommit im Detail

Inhaltsverzeichnis Nachdem Sie einen Container lo...

Beispielcode für ein Mysql-SQL-Überwachungsskript für langsame Abfragen

1. Ändern Sie my.cnf #Der Gesamteffekt besteht da...

Tutorial zur MySQL-Installation in der Linux-CentOS7-Umgebung

Detaillierte Einführung in die Schritte zur Insta...

JavaScript-Dom-Objektoperationen

Inhaltsverzeichnis 1. Kern 1. Holen Sie sich den ...

Online- und Offlineinstallation von Docker und allgemeine Befehlsvorgänge

1. Testumgebung Name Version centos 7.6 Docker 18...

Detaillierte Beispiele zur Ajax-Verwendung in js und jQuery

Inhaltsverzeichnis Natives JS So senden Sie eine ...

JS removeAttribute()-Methode zum Löschen eines Attributs eines Elements

Verwenden Sie in JavaScript die Methode removeAtt...

So beheben Sie Dateisystemfehler in Linux mit „fsck“

Vorwort Das Dateisystem ist für die Organisation ...

So fügen Sie einer Tabelle in SQL Felder und Kommentare hinzu

1. Felder hinzufügen: Tabelle Tabellennamen änder...

Detaillierte Erläuterung der erweiterten Konstruktionseigenschaften von Vue

Inhaltsverzeichnis 1. Richtlinie Zollrichtlinie 2...