Vorwort zur Einführung von MySQL 5.7 json
MySQL5.7 fügt zwei neue Feldtypen hinzu: Json und Generated. Die Generierung des Typs „Generiert“ ist untrennbar mit dem Typ „Generiert“ verbunden Leistungsstärker und produktiver ist die Verwendung in Json möglicherweise nicht, da Json keine Indizes unterstützt. Wenn Sie jedoch die Daten in Json abfragen möchten, handelt es sich ohne einen Index um einen vollständigen Tabellenscan Wird in einer Produktionsumgebung verwendet, aber beim Typ „Generiert“ handelt es sich lediglich um ein virtuelles Feld. Der Wert kann nicht aus anderen Feldern oder aus Berechnungen oder Konvertierungen zwischen Feldern stammen. Mithilfe der Merkmale von Generated kann der Schlüssel im Typ indirekt zu Json hinzugefügt werden, um das Problem zu lösen, dass Json keinen Index erstellen kann. Kurz gesagt: Die Generierung des Typs „Generiert“ bietet Unterstützung für die Indizierungsprobleme des Typs „Json“. Zu den JSON-Werten gehören Einzelwerte, Arrays, Tupel, annotierte JSON-Formate und andere Formate.
Objektiv gesehen bietet das Aufkommen des Json-Typs Komfort für Forschung und Entwicklung und bietet eine ähnliche Unterstützung wie NoSQL. Aus Sicht des DBA-Betriebs und der Wartung kann es jedoch zu Problemen kommen Das Problem ist, dass JSON in der tatsächlichen Produktion zu einer Variante des Textfelds wird. Ich hoffe, dass DBA diesem Typ bei der zukünftigen Verwendung von 5.7 große Aufmerksamkeit schenken wird.
Erstellen Sie eine Tabelle mit JSON-Feldern
Erstellen Sie direkt eine Testtabelle mit JSON-Feldern
CREATE TABLE json_test ( id int(11) NOT NULL AUTO_INCREMENT, group_name varchar(20) DEFAULT NULL, user_info json DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
oder fügen Sie der Tabelle ein Feld vom Typ JSON hinzu
ALTER TABLE json_test ADD COLUMN user_info JSON DEFAULT NULL;
Daten einfügen
JSON-Feldbezogene Abfrage
1. Alle Ergebnisse abfragen
2: JSON_EXTRACT-Abfrage
JSON_EXTRACT Diese Funktion wird hauptsächlich für den genauen Abgleich verwendet, z. B. zum Suchen von Datensätzen mit „Alter=21“ in „user_info“ oder zum Abfragen von Datensätzen mit „name='wangwei'“ oder Namen wie „ %wangwei%“ ' Fuzzy-Abfrage:
SELECT * FROM json_test WHERE JSON_EXTRACT(user_info,'$.age')=21;
Wenn der Wert ein Array ist, ist der Startpositionswert des Arrays 0. Am Gleichzeitig hat MySQL in Version 5.5.9 -> hinzugefügt und bietet damit eine weitere Möglichkeit, äquivalent zu JSON_EXTRACT zu schreiben:
SELECT * FROM json_test WHERE user_info->"$.age"=21;
3. JSON_SEARCH-Abfrage
JSON_SEARCH-String-Suchfunktion, sucht nach Datensätzen, deren Schlüsselwert in JSON die Zeichenfolge „wangwei“ ist. Das Hinzufügen von % bedeutet etwa:
SELECT * FROM json_test WHERE JSON_SEARCH(user_info,'all','wangwei') IS NOT NULL; SELECT * FROM json_test WHERE JSON_SEARCH(user_info,'all','wangwei%') IS NOT NULL; SELECT * FROM json_test WHERE JSON_SEARCH(user_info,'all','%wangwei%') IS NOT NULL;
4. JSON_CONTAINS bestimmt, ob der Schlüssel den angegebenen Wert enthält.
JSON_CONTAINS bestimmt, ob der Schlüssel den angegebenen Wert 0 oder 1 oder null enthält Situationen sind nicht enthalten, enthalten, und der angegebene Schlüssel ist in einer zentralisierten Situation nicht vorhanden:
5. JSON_CONTAINS_PATH bestimmt, ob der Schlüssel im Feld vorhanden ist
JSON_CONTAINS_PATH Bestimmen Sie, ob der Schlüssel im Feld vorhanden ist. Der Rückgabewert ist 0 und 1. Das Format ist JSON_CONTAINS_PATH(json_doc, one_or_all, path[, path]...). ist eins im Pfad, ist es 1. Andernfalls ist es 0; wenn es alles ist, muss es alles umfassen, und die Rückgabe ist 1, andernfalls ist es 0:
6. JSON_LENGTH-Längenabfrage
JSON_LENGTH wird verwendet. Berechnen Sie die Länge des JSON-Felds:
7: JSON_DEPTH-Ebenenabfrage
JSON_DEPTH wird hauptsächlich zum Abfragen der Ebene des Json-Felds verwendet. Der leere Wert ist 1. Unter normalen Umständen ist der Json-Feldtyp nicht leer. Das Abfrageergebnis dieses Werts sollte größer oder gleich 2 sein
8: JSON_TYPE fragt den Datentyp des Schlüsselwerts im Json-Feld abJSON_TYPE wird hauptsächlich zum Abfragen des Datentyps des Schlüsselwerts im Json-Feld verwendet Typ. Die angezeigten Typen werden wie folgt klassifiziert: Reine JSON-Typen:OBJECT: JSON-Objekte;ARRAY: JSON-Arrays;BOOLEAN: Die JSON-True- und -False-Literale;NULL: Der JSON-Nullwert Literal und INT- und BIGINT-Skalare;DOUBLE: MySQL DECIMAL- und NUMERIC-SkalareBinärtypen:
BLOB: MySQL-Binärtyp-Skalare;BINARY, VARBINARY, BLOB;BIT: MySQL-BIT-Skalare
Alle anderen Typen:
OPAQUE (Rohbits)
9. JSON_UNQUOTE entfernt Sonderzeichen davor und danach.
JSON_UNQUOTE wird hauptsächlich zum Entfernen von Sonderzeichen davor und danach sowie zum Formatieren des Werts verwendet und unterstützt derzeit die folgenden Zeichen:
Die oben genannten sind die Neue Funktionen von MySQL 5.7|. Der Inhalt von Json Column und Generated Column (Teil 1). Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).