Поиск…


Вступление

Начиная с MySQL 5.7.8, MySQL поддерживает собственный тип данных JSON, который обеспечивает эффективный доступ к данным в документах JSON (JavaScript Object Notation). https://dev.mysql.com/doc/refman/5.7/en/json.html

замечания

Начиная с MySQL 5.7.8, MySQL поставляется с типом JSON. Многие разработчики сохраняют данные JSON в текстовых столбцах за время журнала, но тип JSON отличается, данные сохраняются в двоичном формате после проверки. Это позволяет избежать накладных расходов при анализе текста при каждом чтении.

Создайте простую таблицу с первичным ключом и полем JSON

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

Вставьте простой JSON

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

Это просто, поскольку можно заметить, что, поскольку ключи словаря JSON должны быть окружены двойными кавычками, вся вещь должна быть обернута в одинарные кавычки. Если запрос будет выполнен успешно, данные будут сохранены в двоичном формате.

Вставьте смешанные данные в поле JSON.

Это вставляет словарь json, где один из членов представляет собой массив строк в таблицу, которая была создана в другом примере.

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

Заметим еще раз, что вам нужно быть осторожным с использованием одиночных и двойных кавычек. Все это должно быть завернуто в одинарные кавычки.

Обновление поля JSON

В предыдущем примере мы видели, как смешанные типы данных могут быть вставлены в поле JSON. Что делать, если мы хотим обновить это поле? Мы собираемся добавить scheveningen в массив с именами variations в предыдущем примере.

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

Заметки:

  1. Массив $.variations в нашем словаре json. Символ $ представляет собой json-документацию. Для полного объяснения путей json, распознаваемых mysql, обратитесь к https://dev.mysql.com/doc/refman/5.7/en/json-path-syntax.html
  2. Поскольку у нас еще нет примера для запросов с использованием json-полей, в этом примере используется первичный ключ.

Теперь, если мы сделаем SELECT * FROM myjson мы увидим

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

Данные CAST для типа JSON

Это преобразует действительные строки json в тип MySQL JSON:

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

Создать объект Json и массив

JSON_OBJECT создает объекты JSON:

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

JSON_ARRAY создает JSON Array:

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

Примечание: myobj.key3 и myarray [2] являются «col3» в качестве фиксированной строки.

Также смешанные данные 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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow