Szukaj…


Wprowadzenie

Począwszy od MySQL 5.7.8, MySQL obsługuje rodzimy typ danych JSON, który umożliwia efektywny dostęp do danych w dokumentach JSON (JavaScript Object Notation). https://dev.mysql.com/doc/refman/5.7/en/json.html

Uwagi

Począwszy od MySQL 5.7.8, MySQL jest dostarczany z typem JSON. Wiele programistów zapisywało dane JSON w kolumnach tekstowych przez czas dziennika, ale typ JSON jest inny, dane są zapisywane w formacie binarnym po sprawdzeniu poprawności. Pozwala to uniknąć nakładów związanych z analizowaniem tekstu przy każdym czytaniu.

Utwórz prostą tabelę z kluczem podstawowym i polem JSON

CREATE TABLE table_name (
    id INT NOT NULL AUTO_INCREMENT, 
    json_col JSON,
    PRIMARY KEY(id)
);

Wstaw prosty JSON

INSERT INTO
    table_name (json_col) 
VALUES
    ('{"City": "Galle", "Description": "Best damn city in the world"}');

To proste, jak można się dostać, ale należy pamiętać, że ponieważ klucze słownika JSON muszą być otoczone podwójnymi cudzysłowami, cała sprawa powinna być zawinięta w pojedyncze cudzysłowy. Jeśli zapytanie powiedzie się, dane zostaną zapisane w formacie binarnym.

Wstaw zmieszane dane do pola JSON.

Powoduje to wstawienie słownika json, w którym jednym z elementów jest tablica ciągów do tabeli utworzonej w innym przykładzie.

INSERT INTO myjson(dict) 
VALUES('{"opening":"Sicilian","variations":["pelikan","dragon","najdorf"]}');

Zauważ jeszcze raz, że musisz zachować ostrożność przy stosowaniu pojedynczych i podwójnych cudzysłowów. Całość musi być spakowana w pojedyncze cytaty.

Aktualizowanie pola JSON

W poprzednim przykładzie widzieliśmy, jak mieszane typy danych mogą być wstawiane do pola JSON. Co jeśli chcemy zaktualizować to pole? Dodamy scheveningen do tablicy o nazwanych variations w poprzednim przykładzie.

UPDATE 
    myjson 
SET 
    dict=JSON_ARRAY_APPEND(dict,'$.variations','scheveningen') 
WHERE 
    id = 2;

Uwagi:

  1. Tablica $.variations w naszym słowniku json. Symbol $ reprezentuje dokumentację json. Pełne wyjaśnienie ścieżek json rozpoznawanych przez mysql znajduje się na stronie https://dev.mysql.com/doc/refman/5.7/en/json-path-syntax.html
  2. Ponieważ nie mamy jeszcze przykładu zapytań za pomocą pól JSON, w tym przykładzie użyto klucza podstawowego.

Teraz, jeśli zrobimy SELECT * FROM myjson , zobaczymy

+----+-----------------------------------------------------------------------------------------+
| id | dict                                                                                    |
+---+-----------------------------------------------------------------------------------------+
| 2  | {"opening": "Sicilian", "variations": ["pelikan", "dragon", "najdorf", "scheveningen"]} |
+----+-----------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

Dane CAST do typu JSON

Konwertuje to prawidłowe ciągi json na typ JSON MySQL:

 SELECT CAST('[1,2,3]' as JSON) ;
 SELECT CAST('{"opening":"Sicilian","variations":["pelikan","dragon","najdorf"]}' as JSON);

Utwórz obiekt Json i tablicę

JSON_OBJECT tworzy obiekty JSON:

 SELECT JSON_OBJECT('key1',col1 , 'key2',col2 , 'key3','col3') as myobj;

JSON_ARRAY tworzy również tablicę JSON:

 SELECT JSON_ARRAY(col1,col2,'col3') as myarray;

Uwaga: myobj.key3 i myarray [2] są „col3” jako stały ciąg.

Również mieszane dane JSON:

 SELECT JSON_OBJECT("opening","Sicilian", "variations",JSON_ARRAY("pelikan","dragon","najdorf") ) as mymixed ;


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow