Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Язык запросов предоставляет мощный синтаксис SQL для работы с данными JSON. Этот язык предназначен для ознакомления с пользователями с интерфейсом SQL, а также поддерживает гибкость и иерархический характер документов JSON. В этой статье представлены основные понятия, синтаксис и функции языка запросов.
Основные понятия языка запросов
Язык запросов построен для обеспечения четкого и эффективного доступа к данным, хранящимся в виде документов JSON. В своей основе язык предназначен для работы с иерархическими и гибкими данными, поддерживая как простые, так и сложные запросы по документам, которые могут иметь различные структуры.
Запросы создаются с помощью знакомого синтаксиса SQL, но адаптированы для модели документов. Эта адаптация означает, что, в отличие от традиционных реляционных баз данных, нет фиксированной схемы— свойства могут быть отсутствуют или имеют разные типы в документах. Язык учитывает регистр и поддерживает ссылки на вложенные свойства, массивы и объекты непосредственно в запросах. Доступны логические, сравнения и арифметические операторы, и язык предназначен для интуитивно понятных для разработчиков с опытом SQL, охватывая гибкость данных NoSQL.
Подсистема запросов оптимизирована для высокой производительности и масштабируемости, автоматически используя индексы для эффективного фильтрации, сортировки и агрегирования данных. Он поддерживает широкий спектр шаблонов запросов, от простых подстановок до сложных агрегатов и вложенных запросов. Эта поддержка позволяет обработчику запросов подходит как для транзакционных, так и для аналитических рабочих нагрузок. Язык также предоставляет конструкции для работы с массивами, обработки значений NULL и неопределенных значений, а также для проецирования результатов в гибких фигурах JSON. Эти конструкции позволяют разработчикам получать точно необходимые данные в формате, необходимом для своих приложений.
Базовая структура запросов
Типичный запрос состоит из следующих предложений:
-
SELECT: указывает, какие поля или значения следует возвращать. -
FROM: определяет исходный контейнер и может назначать псевдоним. -
WHERE: фильтрует документы на основе условий. -
ORDER BY: сортирует результаты. -
GROUP BY: группит результаты по одному или нескольким свойствам.
Пример: простой запрос
SELECT p.id, p.name
FROM products p
WHERE p.price > 20
ORDER BY p.price ASC
Этот запрос возвращает id и name продукты с ценой больше 20, отсортированных по цене по возрастанию.
Работа со свойствами JSON
Доступ к вложенным свойствам можно получить с помощью нотации точек или скобки:
SELECT p.manufacturer.name, p["metadata"].sku
FROM products p
Массивы можно просматривать с помощью JOIN или вложенных запросов:
SELECT p.name, c AS color
FROM products p
JOIN c IN p.metadata.colors
Фильтрация данных
Предложение WHERE поддерживает широкий спектр операторов, включая арифметические, логические, сравнения и строковые операции:
SELECT *
FROM products p
WHERE p.category IN ("Accessories", "Clothing") AND p.price BETWEEN 10 AND 50
Агрегирование и группирование
Вы можете использовать статистические функции и результаты группы:
SELECT p.category, COUNT(1) AS productCount
FROM products p
GROUP BY p.category
Отдельные, верхние и подобные
-
DISTINCTудаляет повторяющиеся значения. -
TOP Nограничивает количество результатов. -
LIKEподдерживает сопоставление шаблонов с подстановочными знаками.
SELECT DISTINCT VALUE p.category
FROM products p
SELECT TOP 5 *
FROM products p
ORDER BY p.price DESC
SELECT *
FROM products p
WHERE p.name LIKE "%bike%"
Подзапросы
Вложенные запросы позволяют выполнять более расширенную фильтрацию и проекцию, включая проверку наличия значений в массивах:
SELECT VALUE p.name
FROM products p
WHERE EXISTS (
SELECT VALUE c FROM c IN p.metadata.colors WHERE c LIKE "%blue%"
)