Главный Каталог Статей РФ
87564 авторов, размещено 48124 статей, сейчас на сайте пользователей: 28 Статистика
Аватар 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'.


Автор Станислав С.

Комментарии
К этой статье пока нет комментариев. Станьте первым! У нас гости не могут комментировать статьи. Пожалуйста авторизуйтесь или зарегистрируйтесь, чтобы прокомментировать.
Интересные статьи по теме
Аватар Fgosonline
Онлайн курсы профессиональной переподготовки: меняем род деятельности здесь и сейчас Работа является неотъемлемой частью жизни каждого человека. Она должна приносить не только достойный заработок, но и моральное удовлетворение. Освоение профессии происходит сразу после окончания школы...
Категория: Образование | Автор: Fgosonline | Добавлено: 13.03.2024
Аватар Fgosonline
Курсы повышения квалификации: когда надо учиться? Для развития, как специалиста в своей отрасли, важно уделять внимание повышению квалификации. Сделать это сегодня можно удаленно. ...
Категория: Образование | Автор: Fgosonline | Добавлено: 10.02.2025
Аватар MCOiP
Дистанционные вебинары для педагогов помогут повысить уровень профессионализма Участие в вебинаре онлайн - это возможность узнать что-о новое и полезное для профессиональной деятельности. Участвовать можно дистанционно....
Категория: Образование | Автор: MCOiP | Добавлено: 10.12.2024
Аватар MCOiP
Вебинары для педагогов онлайн: польза и особенности мероприятий Вебинары для педагогов онлайн - это возможность в комфортных условиях получать новую информацию для последующего применения в работе....
Категория: Образование | Автор: MCOiP | Добавлено: 11.03.2025
Аватар Fgosonline
Почему школьникам стоит участвовать в олимпиадах онлайн? Олимпиады для школьников дистанционно - это шанс для каждого учащегося проявить себя в деле. Стоит обратить на них внимание....
Категория: Образование | Автор: Fgosonline | Добавлено: 04.04.2025
Свежие комментарии

Комментарий эксперта: Как изменения в налоговом законодательстве 2025 года перевернут привычный бухга...

Читать >>

Узбекистан является одним из крупнейших производителей текстильной продукции в Центральной Азии. Страна исторически специализировалась на выращивании ...

Читать >>

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

Читать >>

Если раньше много времени уходило на подготовку материалов для конкурса, отправке по почте, то теперь это намного проще. И доступнее для каждого учите...

Читать >>

Зря вы так про аниме, есть прям крутые ужастики, с кровью и кишками, а есть где головой думать надо. К примеру доктор Стоун....

Читать >>

Лучшие авторы
Аватар nexus-invest
Здравствуйте! Меня зовут Шамшур Иван. Я молодой сп...

Читать

Напишите нам