Grundlegender JSON-Betriebsleitfaden in MySQL 5.7

Grundlegender JSON-Betriebsleitfaden in MySQL 5.7

Vorwort

Aufgrund der Projektanforderungen werden die Speicherfelder im JSON-Format gespeichert. Im Projekt werden die abgefragten Werte zur Verarbeitung über Jackson in entsprechende Beans konvertiert, was nicht einfach und bequem genug ist.

MySQL unterstützt seit der Version 5.7 Daten im JSON-Format, was die Bedienung sehr komfortabel macht.

Erstellen einer Tabelle

Beim Erstellen einer neuen Tabelle kann der Feldtyp direkt auf den JSON-Typ gesetzt werden. Beispielsweise erstellen wir eine Tabelle:

mysql> CREATE TABLE `test_user`(`id` INT PRIMARY KEY AUTO_INCREMENT, `name` VARCHAR(50) NOT NULL, `info` JSON);

Felder vom Typ JSON können NULL sein

Daten einfügen:

mysql> INSERT INTO test_user(`name`, `info`) VALUES('xiaoming','{"sex": 1, "age": 18, "nick_name": "nickname"}');

Ein Feld vom Typ „JSON“ muss eine gültige JSON-Zeichenfolge sein.

Sie können JSON_OBJECT() verwenden, um ein JSON-Objekt zu erstellen:

mysql> INSERT INTO test_user(`name`, `info`) VALUES('xiaohua', JSON_OBJECT("Geschlecht", 0, "Alter", 17));

Verwenden Sie JSON_ARRAY() , um ein JSON-Array zu erstellen:

mysql> INSERT INTO test_user(`name`, `info`) VALUES('xiaozhang', JSON_OBJECT("Geschlecht", 1, "Alter", 19, "Tag", JSON_ARRAY(3,5,90)));

Sehen Sie sich nun die Daten in der Tabelle „test_user“ an:

mysql> wähle * von Testbenutzer; 
+----+--------------------------+--------------------------------------------+ 
| ID | Name | Info |
+----+--------------------------+--------------------------------------------+ 
| 1 | xiaoming | {"Alter": 18, "Geschlecht": 1, "Spitzname": "小萌"} | 
| 2 | xiaohua | {"Alter": 17, "Geschlecht": 0} |
| 3 | xiaozhang | {"Alter": 19, "Geschlecht": 1, "Tag": [3, 5, 90]} | 
+----+--------------------------+--------------------------------------------+
3 Reihen im Satz (0,04 Sek.)

Abfrage

Ausdruck: Objekt ist JSON-Spalte -> ‚$.key‘, Array ist JSON-Spalte -> ‚$.key[index]‘

mysql> wähle Name, Info->'$.nick_name', Info->'$.sex', Info->'$.tag[0]' vom Testbenutzer aus; 
+-----------+---------------------+---------------+------------------+ 
| Name | info->'$.nick_name' | info->'$.sex' | info->'$.tag[0]' | 
+-----------+---------------------+---------------+------------------+ 
| xiaoming | "Xiaoming" | 1 | NULL | 
| xiaohua | NULL | 0 | NULL | 
| xiaozhang | NULL | 1 | 3 | 
+-----------+---------------------+---------------+------------------+ 
3 Reihen im Satz (0,04 Sek.)

Entspricht: JSON_EXTRACT(json列, '$.鍵') für Objekte JSON_EXTRACT(json列, '$.鍵[index]') für Arrays

mysql> wähle Name, JSON_EXTRACT(info, '$.nick_name'), JSON_EXTRACT(info, '$.sex'), JSON_EXTRACT(info, '$.tag[0]') vom Testbenutzer;
 +---------------------------+----------------------------------+-----------------------------+--------------------------------+ 
| Name | JSON_EXTRACT(info, '$.nick_name') | JSON_EXTRACT(info, '$.sex') | JSON_EXTRACT(info, '$.tag[0]') 
|+--------------------------+--------------------------+-----------------------------+--------------------------------+ 
| xiaoming | "Xiaoming" | 1 | NULL |
| xiaohua | NULL | 0 | NULL | 
| xiaozhang | NULL | 1 | 3 | 
+---------------------------+----------------------------------+-----------------------------+--------------------------------+ 
3 Reihen im Satz (0,04 Sek.)

Sie können jedoch sehen, dass „小萌“ in doppelte Anführungszeichen eingeschlossen ist, was nicht erwünscht ist. Sie können die Funktion JSON_UNQUOTE verwenden, um die doppelten Anführungszeichen zu entfernen.

mysql> wähle Namen, JSON_UNQUOTE(info->'$.nick_name') von Testbenutzer, wobei Name='xiaoming'; 
+----------+-----------------------------------+ 
| Name | JSON_UNQUOTE(info->'$.nick_name') | 
+----------+-----------------------------------+ 
| Xiaoming | Xiaoming| 
+----------+-----------------------------------+ 
1 Zeile im Satz (0,05 Sek.)

Sie können den Operator ->> auch direkt verwenden

mysql> wähle Name, Info->>'$.nick_name' vom Testbenutzer, wobei Name='xiaoming';
+----------+----------------------+ 
| Name | info->>'$.nick_name' | 
+----------+----------------------+ 
| Xiaoming | Xiaoming| 
+----------+----------------------+ 
1 Zeile im Satz (0,06 Sek.)

Natürlich können Attribute auch als Abfragebedingungen verwendet werden

mysql> wähle Namen, Info->>'$.nick_name' vom Testbenutzer, wobei Info->'$.nick_name'='Xiao Meng'; 
+----------+----------------------+ 
| Name | info->>'$.nick_name' | 
+----------+----------------------+ 
| Xiaoming | Xiaoming| 
+----------+----------------------+ 
1 Zeile im Satz (0,05 Sek.)

Erwähnenswert ist, dass virtuelle Spalten verwendet werden können, um bestimmte Attribute des JSON-Typs schnell abzufragen.

Erstellen Sie eine virtuelle Spalte:

mysql> ALTER TABLE `test_user` ADD `nick_name` VARCHAR(50) GENERATED ALWAYS AS (info->>'$.nick_name') VIRTUAL;

Beachten Sie die Verwendung des Operators ->>

Die Verwendung ist die gleiche wie bei der normalen Spaltenabfrage:

mysql> wähle Name, Spitzname vom Testbenutzer, wobei Spitzname = 'Benutzername' ist; 
+----------+-----------+ 
| Name | Spitzname | 
+----------+-----------+ 
| Xiaoming | Xiaoming| 
+----------+-----------+ 
1 Zeile im Satz (0,05 Sek.)

erneuern

Verwenden Sie JSON_INSERT() um neue Werte einzufügen, ohne vorhandene Werte zu überschreiben

mysql> UPDATE test_user SET info = JSON_INSERT(info, '$.sex', 1, '$.nick_name', 'Benutzername'), wobei id=2;

Schauen Sie sich die Ergebnisse an

mysql> wähle * von Testbenutzer, wobei ID=2 ist; 
+----+---------+--------------------------------------------+---------------+ 
| ID | Name | Info | Spitzname | 
+----+---------+--------------------------------------------+---------------+ 
| 2 | xiaohua | {"Alter": 17, "Geschlecht": 0, "Spitzname": "小花"} | xiaohua| 
+----+---------+--------------------------------------------+---------------+ 
1 Zeile im Satz (0,06 Sek.)

Verwenden Sie JSON_SET() um neue Werte einzufügen und vorhandene Werte zu überschreiben

mysql> UPDATE test_user SET info = JSON_INSERT(info, '$.sex', 0, '$.nick_name', 'Benutzername'), wobei id=3;

Schauen Sie sich die Ergebnisse an

mysql> wähle * von Testbenutzer, wobei ID=3 ist; 
+----+-----------+--------------------------------------------------------------------------+---------------+ 
| ID | Name | Info | Spitzname | 
+----+-----------+--------------------------------------------------------------------------+---------------+ 
| 3 | xiaozhang | {"Alter": 19, "Geschlecht": 1, "Tag": [3, 5, 90], "Spitzname": "小张"} | xiaozhang| 
+----+-----------+--------------------------------------------------------------------------+---------------+ 
1 Zeile im Satz (0,06 Sek.)

Verwenden Sie JSON_REPLACE() um nur vorhandene Werte zu ersetzen

mysql> UPDATE test_user SET info = JSON_REPLACE(info, '$.sex', 1, '$.tag', '[1,2,3]'), wobei id=2;

Schauen Sie sich die Ergebnisse an

mysql> wähle * von Testbenutzer, wobei ID=2 ist; 
+----+---------+--------------------------------------------+---------------+ 
| ID | Name | Info | Spitzname | 
+----+---------+--------------------------------------------+---------------+ 
| 2 | xiaohua | {"Alter": 17, "Geschlecht": 1, "Spitzname": "小花"} | xiaohua| 
+----+---------+--------------------------------------------+---------------+ 
1 Zeile im Satz (0,06 Sek.)

Sie können sehen, dass das Tag nicht aktualisiert wurde.

löschen

Entfernen von JSON-Elementen mit JSON_REMOVE()

mysql> UPDATE test_user SET info = JSON_REMOVE(info, '$.sex', '$.tag'), wobei id=1;

Schauen Sie sich die Ergebnisse an

mysql> wähle * von Testbenutzer, wobei ID=1 ist; 
+----+----------+----------------------------------+-----------+ 
| ID | Name | Info | Spitzname | 
+----+----------+----------------------------------+-----------+ 
| 1 | xiaoming | {"Alter": 18, "Spitzname": "Xiao Meng"} | Xiao Meng | 
+----+----------+----------------------------------+-----------+ 
1 Zeile im Satz (0,05 Sek.)

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • MySQL-Operationen: Operationen mit JSON-Datentyp
  • Detaillierte Erläuterung der JSON-Serienoperationsfunktionen in MySQL
  • Zusammenfassung der zugehörigen Funktionen für JSON-Ergebnisse von MySQL-Abfragen
  • Datenabfragevorgang im MySQL-JSON-Format

<<:  Einführung und Verwendung der Angular-Pipeline PIPE

>>:  Ein Beispiel, wie Tomcat Session verwaltet

Artikel empfehlen

Wo werden MySQL-Daten gespeichert?

Speicherort der MySQL-Datenbank: 1. Wenn MySQL di...

Detailliertes Tutorial zur Installation von MySQL unter Linux

1. Beenden Sie den MySQL-Dienst # service mysqld ...

Lösung für falsche Zeichenfolgenwerte in MySQL

Viele Freunde berichten von folgendem Fehler, wen...

Eine kurze Analyse von MySQL-Sperren und -Transaktionen

MySQL selbst wurde auf Basis des Dateisystems ent...

Zusammenfassung der Konstruktor- und Superwissenspunkte in React-Komponenten

1. Einige Tipps zu mit class in react deklarierte...

So installieren Sie nginx unter Linux

Nginx wurde in der Programmiersprache C entwickel...

Eine kurze Analyse der Unterschiede zwischen Undo, Redo und Binlog in MySQL

Inhaltsverzeichnis Vorwort 【Protokoll rückgängig ...

Müssen Designer das Programmieren lernen?

Oftmals wird nach der Fertigstellung eines Webdes...

MySql fügt Daten erfolgreich ein, meldet aber [Err] 1055 Fehlerlösung

1. Frage: Ich habe in diesen Tagen Einfügevorgäng...

So verwenden Sie den Linux-Befehl „locate“

01. Befehlsübersicht Der Befehl „locate“ ist eige...

So fügen Sie Docker ein Zertifikat hinzu

1. Upgrade-Vorgang: sudo apt-get update Probleme ...

Beispiel für die Konvertierung eines Zeitstempels in ein Datum in MySQL

Vorwort Ich bin bei der Arbeit auf folgende Situa...