MySQL 8.0 kann jetzt JSON verarbeiten

MySQL 8.0 kann jetzt JSON verarbeiten

Vorwort:

Nach einem langen Test wird das gesamte System auf Mysql8.0 migriert. Mysql8.0 hat viele verwandte Json API-Operationen für Json Operationen hinzugefügt/optimiert. Ich habe die offiziellen Dokumente gelesen. Obwohl die meisten JSON-Operationen auf der Anwendungsebene abgeschlossen werden, sind einige Mysql JSON -Syntaxen leicht zu debug . Ich habe die grundlegenden und wertvollen Teile zur späteren Bezugnahme ausgewählt.

https://dev.mysql.com/doc/ref...
https://dev.mysql.com/doc/ref...

1. Kurzübersicht

null ist nicht zulässig. Die Json -Formatdefinition ähnelt LONGBLOB or LONGTEXT . Die maximale Länge wird durch max_allowed_packet gesteuert.
Die Funktion zum Anzeigen des vom JSON-Feld belegten Speicherplatzes ist JS ON_STORAGE_SIZE(xxx) ;
Zusätzlich zu den allgemeinen Json -Operationen unterstützt es auch GeoJSON bezogene Operationen (geometriebasiertes Geodatenaustauschformat).
Unterstützt die Indizierung für JSON-Spalten (kombiniert mit der neuen Funktion index Mysql8.0 );
Zu MySql8.0 wurde eine optionale Optimierung hinzugefügt, die teilweise, direkte Aktualisierungen von Json Column unterstützt. Die verwendbaren Funktionen sind JSON_SET() , JSON_REPLACE() und JSON_REMOVE() . Bei der Verwendung gelten einige Einschränkungen, die Leistung ist jedoch besser.

2. JSON-Grundwerkzeuge

//Verwenden Sie die Methode JSON_ARRAY, um ein JSON-Array zu definieren;
WÄHLEN SIE JSON_ARRAY(1, "abc", NULL, TRUE, CURTIME())
//Ergebnis: [1, "abc", null, true, "11:30:24.000000"]  

//Die JSON_OBJECT-Methode definiert das JSON-Objekt SELECT JSON_OBJECT('id', 87, 'name', 'carrot')
//Ergebnis {"id": 87, "name": "carrot"}

//Array- und Objektverschachtelungsszenarien;
[99, {"id": "HK500", "Kosten": 75,99}, ["heiß", "kalt"]] {"k1": "Wert", "k2": [10, 20]}

//Datum/Uhrzeit-Typdefinition ["12:18:29.000000", "2015-07-29", "2015-07-29 12:18:29.000000"]

 //JSON_QUOTE maskiert das JSON-Objekt in einen String, d. h., es maskiert die internen Symbole und setzt das gesamte Objekt in doppelte Anführungszeichen.
JSON_QUOTE(' "null" ')
//Ergebnis "\"null\""

//JSON-Inhalt verschönern und ausgeben;
JSON_PRETTY()

//Sie können JSON/Elemente innerhalb von JSON in andere Datentypen konvertieren;
//Konvertieren Sie das ID-Element im JSON-Jdoc wie folgt in ein vorzeichenloses Int:
[https://dev.mysql.com/doc/refman/8.0/en/json.html#json-converting-between-types] (https://dev.mysql.com/doc/refman/8.0/en/json.html#json-converting-between-types)
ORDER BY CAST(JSON_EXTRACT(jdoc, '$.id') AS UNSIGNED);

Die JSON -Zusammenführungsoperationen JSON_MERGE_PRESERVE() and JSON_MERGE_PATCH() werden im tatsächlichen Geschäftsleben selten verwendet.

-> -->-Operator, findet den Wert entsprechend dem Schlüssel; der Unterschied besteht darin, dass --> die " und Escape-Zeichen entfernt; die entsprechende Function ist JSON_EXTRACT()

// {"mascot": "Unser Maskottchen ist ein Delphin namens \"Sakila\"."}
mysql> SELECT col->"$.mascot" FROM qtest;
// Ergebnis: | „Unser Maskottchen ist ein Delphin namens \"Sakila\".“ |
Wählen Sie Satz->>"$.mascot" aus Fakten;
// Ergebnis: | Unser Maskottchen ist ein Delphin namens „Sakila“. |

3. JSON-Pfadausdruck

Der Inhalt zwischen den oben stehenden Anführungszeichen --> ist der sogenannte JSON Path expression ;
Diese Syntax ist Teil der ECMAScript Spezifikation, daher sollten insbesondere Front-End-Programmierer damit vertraut sein.

Nehmen Sie das folgende JSON als Beispiel:

 [3, {"a": [5, 6], "b": 10}, [99, 100]]
 $[0] = 3 ;
 $[1] = {"a": [5, 6], "b": 10};
 $[2] = [99, 100];


Gleichzeitig sind $[1], $[2] keine Skalare, weiter

$[1].a = [5,6]
$[1].a[1] = 6
$[1].b = 10;
$[2][0] = 99;


Weitere unterstützte Syntaxfunktionen $[n bis m]

 $[ 1 bis 2] = [{"a": [5, 6], "b": 10}, [99, 100]]
 $[letzte-2 bis letzte-1] = [3, {"a": [5, 6], "b": 10}]


Um es zusammenzufassen:

  • ein .* stellt alle members in object dar;
  • b [*] stellt alle cells in array ;
  • c [Präfix] ** Suffix steht für alle Pfade, die mit einem Präfix beginnen und mit einem Suffix enden;

4. JSON suchen und ändern

//Wie oben sollte es möglich sein, stattdessen die Syntax --> zu verwenden;
mysql> AUSWÄHLEN JSON_EXTRACT('{"a": 1, "b": 2, "c": [3, 4, 5]}', '$.*');
//[1, 2, [3, 4, 5]]  
WÄHLEN SIE JSON_EXTRACT('{"a": 1, "b": 2, "c": [3, 4, 5]}', '$.c[*]')
//[3, 4, 5]
WÄHLEN SIE JSON_EXTRACT('{"a": {"b": 1}, "c": {"b": 2}}', '$**.b');
//[1, 2]
SELECT JSON_EXTRACT('[1, 2, 3, 4, 5]', '$[1 bis 3]');
//[2, 3, 4]

//JSON_SET JSON_INSERT JSON_REPLACE JSON_REMOVE
SET @j = '["a", {"b": [wahr, falsch]}, [10, 20]]';
WÄHLEN SIE JSON_SET(@j, '$[1].b[0]', 1, '$[2][2]', 2);
//| ["a", {"b": [1, falsch]}, [10, 20, 2]]    

WÄHLEN SIE JSON_INSERT(@j, '$[1].b[0]', 1, '$[2][2]', 2);
//["a", {"b": [wahr, falsch]}, [10, 20, 2]]

JSON_REPLACE(@j, '$[1].b[0]', 1, '$[2][2]', 2)
//["a", {"b": [1, falsch]}, [10, 20]]

WÄHLEN SIE JSON_REMOVE(@j, '$[2]', '$[1].b[1]', '$[1].b[1]');
//["a", {"b": [wahr]}]

Ein häufiges Szenario JSON Table Functions ist, dass die JSON Daten selbst eine Tabellenstruktur sind;

JSON_TABLE(*expr*, *path* COLUMNS (*column_list*) [AS\] *alias*)

WÄHLEN SIE * AUS JSON_TABLE( '[{"a":"3"},{"a":2},{"b":1},{"a":0},{"a":[1,2]}]',
  -> "$[*]"
  -> SPALTEN(
  -> rowid FÜR ORDINALITÄT,
  -> ac VARCHAR(100) PATH "$.a" STANDARD '111' BEI LEER STANDARD '999' BEI FEHLER,
  -> aj JSON PATH "$.a" STANDARD '{"x": 333}' BEI LEER,
  -> bx INT EXISTS PATH "$.b"
  -> )
  -> ) AS tt;

Comparison and Ordering of JSON Values

Ich glaube im Moment nicht, dass es sich lohnt.

Aggregation of JSON Values

Ich glaube nicht, dass es sich im Moment lohnt. Sie können die Aggregatfunktion verwenden, indem Sie den Rückgabewert in einen anderen Typ konvertieren.

Dies ist das Ende dieses Artikels darüber, wie MySQL 8.0 JSON ausführen kann. Weitere relevante Inhalte zum Ausführen von MySQL 8.0-JSON finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • MySQL-Datenbankterminal – allgemeine Befehlscodes für Vorgänge
  • Aggregatabfrage- und Union-Abfragevorgänge für MySQL-Datenbanken
  • Detaillierte grundlegende Operationen an Datentabellen in der MySQL-Datenbank
  • MySQL-Datenbankoperationen und Datentypen
  • Spezifische Verwendung von MySQL-Operatoren (und, oder, in, nicht)
  • Fallanalyse mehrerer MySQL-Aktualisierungsvorgänge
  • Zusammenfassung der erweiterten MySQL-Bedienungsanleitung

<<:  So legen Sie eine horizontale Navigationsstruktur in HTML fest

>>:  ElementUI-Komponente el-dropdown (Falle)

Artikel    

Artikel empfehlen

So verwenden Sie Provide zur Implementierung der Statusverwaltung in Vue3

Inhaltsverzeichnis Vorwort So implementieren Sie ...

Detaillierte Erklärung zum Erstellen eines Arrays in JavaScript

Inhaltsverzeichnis Erstellen von Arrays in JavaSc...

Zusammenfassung häufig verwendeter MySQL-Befehle im Linux-Betriebssystem

Hier sind einige gängige MySQL-Befehle für Sie: -...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.5.27 winx64

1. Installationspaket MySQL-Dienst-Downloadadress...

Native JS-Drag-and-Drop-Funktion zum Erstellen eines Slider-Beispielcodes

Drag & Drop ist eine gängige Funktion im Fron...

Mybatis implementiert Details zum Abfangen und Ändern von SQL-Abfragen

Vorwort Eine der Funktionen eines Interceptors be...

So verschieben Sie den Datenspeicherort von mysql5.7.19 in Centos7

Szenario: Mit zunehmender Datenmenge ist die Fest...

Nodejs-Fehlerbehandlungsprozessaufzeichnung

In diesem Artikel wird der Verbindungsfehler ECON...

Zusammenfassung der MySQL-Ansichtsprinzipien und Anwendungsbeispiele

Dieser Artikel fasst die Prinzipien und die Verwe...

MariaDB unter Linux startet mit dem Root-Benutzer (empfohlen)

Da ich Sicherheitsprodukte testen musste, wollte ...