Heim  >  Artikel  >  Datenbank  >  Neue Funktionen von MySQL 5.7 |. Json-Spalte und generierte Spalte (Teil 1)

Neue Funktionen von MySQL 5.7 |. Json-Spalte und generierte Spalte (Teil 1)

黄舟
黄舟Original
2017-02-07 13:08:071315Durchsuche

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

Neue Funktionen von MySQL 5.7 |. Json-Spalte und generierte Spalte (Teil 1)

JSON-Feldbezogene Abfrage

1. Alle Ergebnisse abfragen

Neue Funktionen von MySQL 5.7 |. Json-Spalte und generierte Spalte (Teil 1)

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;

Neue Funktionen von MySQL 5.7 |. Json-Spalte und generierte Spalte (Teil 1)

Neue Funktionen von MySQL 5.7 |. Json-Spalte und generierte Spalte (Teil 1)

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;

Neue Funktionen von MySQL 5.7 |. Json-Spalte und generierte Spalte (Teil 1)

Neue Funktionen von MySQL 5.7 |. Json-Spalte und generierte Spalte (Teil 1)

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:

Neue Funktionen von MySQL 5.7 |. Json-Spalte und generierte Spalte (Teil 1)

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:

Neue Funktionen von MySQL 5.7 |. Json-Spalte und generierte Spalte (Teil 1)

6. JSON_LENGTH-Längenabfrage

JSON_LENGTH wird verwendet. Berechnen Sie die Länge des JSON-Felds:

Neue Funktionen von MySQL 5.7 |. Json-Spalte und generierte Spalte (Teil 1)

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

Neue Funktionen von MySQL 5.7 |. Json-Spalte und generierte Spalte (Teil 1)

8: JSON_TYPE fragt den Datentyp des Schlüsselwerts im Json-Feld ab

JSON_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-Skalare


Temporale Typen:

DATETIME: MySQL DATETIME- und TIMESTAMP-Skalare;DATE: MySQL DATE Skalare;TIME: MySQL-TIME-Skalare


String-Typen:

STRING: MySQL-UTF8-Zeichentyp-Skalare;CHAR, VARCHAR, TEXT, ENUM und SET


Binärtypen:

BLOB: MySQL-Binärtyp-Skalare;BINARY, VARBINARY, BLOB;BIT: MySQL-BIT-Skalare


Alle anderen Typen:

OPAQUE (Rohbits)

Neue Funktionen von MySQL 5.7 |. Json-Spalte und generierte Spalte (Teil 1)

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:

Neue Funktionen von MySQL 5.7 |. Json-Spalte und generierte Spalte (Teil 1)

Neue Funktionen von MySQL 5.7 |. Json-Spalte und generierte Spalte (Teil 1)

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).


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn