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 mysql> INSERT INTO test_user(`name`, `info`) VALUES('xiaohua', JSON_OBJECT("Geschlecht", 0, "Alter", 17)); Verwenden Sie 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: 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 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 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 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 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:
|
<<: Einführung und Verwendung der Angular-Pipeline PIPE
>>: Ein Beispiel, wie Tomcat Session verwaltet
Als ich kürzlich das Linux-Betriebssystem zum Aus...
Standardmäßig ist der Tabellentitel horizontal ze...
Hintergrund Es gibt einen Tencent Linux Cloud-Hos...
Inhaltsverzeichnis 1. Implizite Konvertierung Kon...
In Node.js ist eine .js-Datei ein vollständiger B...
Wenn wir in CentOS7 MySQL installieren, wird Mari...
<br />Vorheriges Webdesign-Tutorial: Webdesi...
Redis ist ein verteilter Cache-Dienst. Caching is...
Inhaltsverzeichnis 1. Szenario 2. Grundfunktionen...
Über Win Docker-Desktop möchte ich mich mit der C...
Inhaltsverzeichnis einführen 1. Pica 2. Lena.js 3...
1. Konfiguration Die ersten beiden sind standardm...
JavaScript zum Erreichen der Quellcode-Download-A...
Beim Verknüpfen zweier Tabellen konnte kein Fremd...
Zwei Möglichkeiten zum Aktivieren des Proxy React...