Главный Каталог Статей РФ
85978 авторов, размещено 47108 статей, сейчас на сайте пользователей: 120 Статистика
Аватар StaPanda

Тип данных json

Категория:  Образование  | Автор:  StaPanda | Опубликовано: 14.05.2018

С MySQL 5.7.8 MySQL поддерживает родной JSON тип данных определяется В RFC 7159 что обеспечивает эффективный доступ к данным в формате json (JavaScript-объекты Обозначение) документов. Этот JSON тип данных обеспечивает следующие преимущества по сравнению с хранением в формате json-строки в столбец строки:

  • Автоматическая проверка json-документов, хранящихся в JSON столбцы. Недействительным документам производить ошибка.
  • Оптимизирован Формат хранения. Документы хранятся в формате json, JSONстолбцы преобразуются к внутреннему формат, который позволяет быстрый доступ к элементам документа. Позже, когда сервер должен прочитать значение в json, хранящиеся в этом двоичный Формат, стоимость не должна быть проанализирована с текстом представление. Двоичный Формат таким образом, чтобы включить сервера искать подобъектами или вложенные значения по ключу или индекс массива не читая все значения до или после них в документе.
  • Пространство, необходимое для хранения JSON документ приблизительно так же, как LONGBLOB и LONGTEXT; для получения дополнительной информации. Это важно иметь в виду, что размер любого документа json хранить в JSON столбце ограничивается стоимостью из max_allowed_packet системы переменной.

В JSON столбец не может иметь значение по умолчанию.

Наряду с JSON типом данных, набора SQL функции можно включить операции над значениями json, например как создания, манипулирования и поиска. Следующее обсуждение показаны примеры этих операций.

Набор пространственные функции для работы со значениями geojson, который тоже в наличии.

JSON колонки, как колонки другие двоичные типа, не индексируются непосредственно; вместо этого, вы можете создать индекс на генерируемый столбец, который извлекает значение скаляра от JSON колонки.

Оптимизатор MySQL также ищет совместимые указатели на виртуальные столбцы, которые соответствуют выражения json.

Кластер MySQL НБР 7.5 (7.5.2 и выше) поддерживает JSON столбцы и MySQL в json функции, в том числе создание индекса для столбца генерируется из JSON колонки как решение для будучи не в состоянии индекс в JSON столбце. Максимум 3 JSON столбцы в NDB Таблица поддерживается.

Следующие несколько разделов содержат информацию о создание и манипулирование значениями json.

Массив json содержит список значений, разделенных запятыми:

["abc", 10, null, true, false]

Json-объект содержит набор пар ключ-значение, разделенных запятыми и заключены в пределах {}:

{"k1": "value", "k2": 10}

Как примеры иллюстрируют, массивы json и объекты могут содержать скалярные значения, которые являются строками или числами, в json значение NULL литерал или объект json boolean значение True или false литералы. Ключи в Объекты json должны быть строками. Временная (дата, время, или дату и время) скалярные значения тоже допустимы:

["12:18:29.000000", "2015-07-29", "2015-07-29 12:18:29.000000"]

Вложения допускаются в элементах массива json и json-объект ключевые значения:

[99, {"id": "HK500", "cost": 75.99}, ["hot", "cold"]]

{"k1": "value", "k2": [10, 20]}

Можно также получить значения json от ряда функций поставленная MySQL для этой цели , а также методом литья значений других типов в JSON Тип через CAST(value AS JSON). Следующий несколько пунктов описывают, как MySQL обрабатывает json и значения предоставляются в качестве входных данных.

В MySQL, значения json записываются в виде строки. MySQL анализирует любой строкой, используемая в контексте, который требует значение json и выдает ошибку, если он не действителен в json. Эти контексты включить вставить значение в столбец, который имеет JSON тип данных и при передаче аргумента функция, которая ожидает значением json (обычно отображается как json_doc или json_val в документации для Функции json в MySQL), как показано в следующих примерах:

  • При попытке вставить значение в JSONколонка выполняется, если значение является допустимым json, но не если это не так:

mysql> CREATE TABLE t1 (jdoc JSON);

Query OK, 0 rows affected

mysql> INSERT INTO t1 VALUES('{"key1": "value1", "key2": "value2"}');

Query OK, 1 row affected

mysql> INSERT INTO t1 VALUES('[1, 2,');

ERROR 3140 (22032) at line 2: Invalid JSON text:

"Invalid value." at position 6 in value (or column) '[1, 2,'.

В JSON_TYPE() функции ожидает аргумент json и пытается разобрать его в виде json значение. Она возвращает Тип json значения, если он действует и выдает ошибку, в противном случае:

mysql> SELECT JSON_TYPE('["a", "b", 1]');

Тип данных: ARRAY                      

mysql> SELECT JSON_TYPE('"hello"');

Тип данных: STRING

mysql> SELECT JSON_TYPE('hello');

ERROR 3146 (22032): Invalid data type for JSON data in argument 1

to function json_type; a JSON string or JSON type is required.

MySQL обрабатывает строки, используемые в json контекста с помощью utf8mb4 набор символов и utf8mb4_bin сортировки. Строки в другой наборы символов преобразуются в utf8mb4 качестве надо.

В качестве альтернативы для записи значений json с использованием символьных строк, существуют функции для создания значений json из компонентов элементы. JSON_ARRAY() берет (возможно, пустой) список значений и возвращает массив json с этими значениями:

mysql> SELECT JSON_ARRAY('a', 1, NOW());

["a", 1, "2015-07-27 09:43:47.000000"]

JSON_OBJECT() берет (возможно пустой) список пар ключ-значение и возвращает json-объект содержащих эти пары:

mysql> SELECT JSON_OBJECT('key1', 1, 'key2', 'abc');

| {"key1": 1, "key2": "abc"} 

JSON_MERGE() принимает два или больше Документы json и возвращает результат:

mysql> SELECT JSON_MERGE('["a", 1]', '{"key": "value"}');

 ["a", 1, {"key": "value"}]

Для получения информации о слиянии правила.

Значения json могут быть назначены пользовательские переменные:

mysql> SET @j = JSON_OBJECT('key', 'value');

mysql> SELECT @j;

{"key": "value"}

Однако, пользовательские переменные не могут быть JSON тип данных, так что хотя @j в предыдущем примере выглядит как json с значение и имеет тот же набор символов и сопоставление в виде json значение, вовсе не имеют JSON тип данных. Вместо этого, в результате JSON_OBJECT() преобразуется в когда строка присваивается переменной.

Строки, созданные путем преобразования значения json есть набор символов Для utf8mb4 и сортировки utf8mb4_bin:

mysql> SELECT CHARSET(@j), COLLATION(@j);

| utf8mb4     | utf8mb4_bin   |

Потому что utf8mb4_bin это двоичные параметры сортировки сравнение значения json является чувствительным к регистру.

mysql> SELECT JSON_ARRAY('x') = JSON_ARRAY('X');

Результат : 0

Чувствительность к регистру касается формата json null, true, иfalse литералы, которые всегда должны быть написаны в Нижнем регистре:

mysql> SELECT CAST('null' AS JSON);

| null                 |

mysql> SELECT CAST('NULL' AS JSON);

ERROR 3141 (22032): Invalid JSON text in argument 1 to function cast_as_json:

"Invalid value." at position 0 in 'NULL'.


Автор Станислав С.
Комментарии
К этой статье пока нет комментариев. Станьте первым! У нас гости не могут комментировать статьи. Пожалуйста авторизуйтесь или зарегистрируйтесь, чтобы прокомментировать.
Интересные статьи по теме
Аватар KateZh
Как научиться быстро считать проценты Когда в магазине продавец говорит вам, что на понравившуюся вам вещь действует скидка 20%, что вы делаете? Вы пытаетесь подсчитать сумму скидки самостоятельно или ждете пока вам ее огласят? А как в ба...
Категория: Образование | Автор: KateZh | Добавлено: 25.03.2014
Аватар Nikiforoff
Чем привлекают родителей частные школы Чем привлекают родителей частные школы?...
Категория: Образование | Автор: Nikiforoff | Добавлено: 30.08.2021
Аватар frol7575
Краткая история создания телевизора С незапамятных времён человек мечтал видеть на огромные расстояния. Слагались об этом легенды и сказки, все, наверное, помнят сказки о волшебных зеркалах, о тарелочках с яблочками и тому подобное. Но ...
Категория: Образование | Автор: frol7575 | Добавлено: 19.05.2009
Аватар GodKnows
Методы быстрого устного счёта Быстрый счёт в уме и методы устных вычислений, а также совершенствование навыков счёта....
Категория: Образование | Автор: GodKnows | Добавлено: 22.10.2009
Аватар medved-97
Рейтинг профессий в России Выбор профессии очень ответственный и серьезный шаг. Очень важно не ошибиться и сделать правильный выбор, ведь род деятельности будет формировать человека всю его жизнь, раскрывать определенные качест...
Категория: Образование | Автор: medved-97 | Добавлено: 17.07.2016
Лучшие авторы
Аватар dekor75
Молод и чертовски привлекателен.
Занимаюсь ремо...

Читать

Аватар demnn
Люблю рыбалку.

Читать

Аватар Галина
Кадровый центр «ЮНИТИ» основан в 1999 году. В комп...

Читать

Аватар vip.grafika
Сами знаете.

Читать

Аватар tanir23
создать сайт самому
Posting в форуме позволит В...

Читать

Свежие комментарии
Нормальная тема.

Читать

Талантливый человек талантлив во всём! Будь как Паша! А ещё ты можешь ...

Читать

Можно выбрать.

Читать

Ой, шутник.

Читать

https://priornews.ru/zastrojshhik-iz-hmao-sravnil-ufas-s-prestupnoj-gr...

Читать

Напишите нам