Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Język zapytań zapewnia zaawansowaną składnię przypominającą język SQL do pracy z danymi JSON. Ten język jest przeznaczony do znajomości środowiska SQL, a jednocześnie zapewnia elastyczność i hierarchiczny charakter dokumentów JSON. W tym artykule przedstawiono podstawowe pojęcia, składnię i funkcje języka zapytań.
Podstawowe pojęcia dotyczące języka zapytań
Język zapytań jest tworzony w celu zapewnienia ekspresyjnego i wydajnego dostępu do danych przechowywanych jako dokumenty JSON. Język jest przeznaczony do pracy natywnie z danymi hierarchicznymi i elastycznymi, obsługującymi zarówno proste, jak i złożone zapytania dotyczące dokumentów, które mogą mieć różne struktury.
Zapytania składają się przy użyciu znanej składni podobnej do języka SQL, ale są dostosowane do modelu dokumentu. Ta adaptacja oznacza, że w przeciwieństwie do tradycyjnych relacyjnych baz danych nie ma stałego schematu — właściwości mogą brakować lub mieć różne typy w dokumentach. Język uwzględnia wielkość liter i obsługuje odwoływanie się do zagnieżdżonych właściwości, tablic i obiektów bezpośrednio w zapytaniach. Dostępne są operatory logiczne, porównawcze i arytmetyczne, a język został zaprojektowany tak, aby był intuicyjny dla tych deweloperów ze środowiskiem SQL, jednocześnie wykorzystując elastyczność danych NoSQL.
Aparat zapytań jest zoptymalizowany pod kątem wysokiej wydajności i skalowalności, automatycznie używając indeksów do wydajnego filtrowania, sortowania i agregowania danych. Obsługuje szeroką gamę wzorców zapytań— od prostych odnośników po złożone agregacje i podzapytania. Ta obsługa sprawia, że aparat zapytań jest odpowiedni zarówno dla obciążeń transakcyjnych, jak i analitycznych. Język udostępnia również konstrukcje do pracy z tablicami, obsługi wartości null i niezdefiniowanych oraz projekcji wyników w elastycznych kształtach JSON. Konstrukcje te umożliwiają deweloperom pobieranie dokładnie potrzebnych danych w formacie wymaganym przez aplikacje.
Podstawowa struktura zapytań
Typowe zapytanie składa się z następujących klauzul:
-
SELECT: określa, które pola lub wartości mają być zwracane. -
FROM: identyfikuje kontener źródłowy i może przypisać alias. -
WHERE: filtruje dokumenty na podstawie warunków. -
ORDER BY: sortuje wyniki. -
GROUP BY: Grupuje wyniki według co najmniej jednej właściwości.
Przykład: proste zapytanie
SELECT p.id, p.name
FROM products p
WHERE p.price > 20
ORDER BY p.price ASC
To zapytanie zwraca wartości id i name produktów z ceną większą niż 20 posortowaną według ceny w kolejności rosnącej.
Praca z właściwościami JSON
Dostęp do właściwości zagnieżdżonych można uzyskać przy użyciu notacji kropkowej lub notacji nawiasu:
SELECT p.manufacturer.name, p["metadata"].sku
FROM products p
Tablice można przechodzić przy użyciu JOIN podzapytania lub podzapytania:
SELECT p.name, c AS color
FROM products p
JOIN c IN p.metadata.colors
Filtrowanie danych
Klauzula WHERE obsługuje szeroką gamę operatorów, w tym operacje arytmetyczne, logiczne, porównawcze i ciągowe:
SELECT *
FROM products p
WHERE p.category IN ("Accessories", "Clothing") AND p.price BETWEEN 10 AND 50
Agregacja i grupowanie
Możesz użyć funkcji agregujących i wyników grupowania:
SELECT p.category, COUNT(1) AS productCount
FROM products p
GROUP BY p.category
Unikatowe, górne i podobne
-
DISTINCTusuwa zduplikowane wartości. -
TOP Nogranicza liczbę wyników. -
LIKEobsługuje dopasowywanie wzorców z symbolami wieloznacznymi.
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%"
Subqueries
Podzapytania umożliwiają bardziej zaawansowane filtrowanie i projekcję, w tym sprawdzanie istnienia wartości w tablicach:
SELECT VALUE p.name
FROM products p
WHERE EXISTS (
SELECT VALUE c FROM c IN p.metadata.colors WHERE c LIKE "%blue%"
)