Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Dotazovací jazyk poskytuje výkonnou syntaxi podobné JAZYKu SQL pro práci s daty JSON. Tento jazyk je navržený tak, aby se seznámil s prostředím SQL a zároveň podporoval flexibilitu a hierarchickou povahu dokumentů JSON. Tento článek představuje základní koncepty, syntaxi a funkce dotazovacího jazyka.
Základní koncepty dotazovacího jazyka
Dotazovací jazyk je vytvořený tak, aby poskytoval výrazný a efektivní přístup k datům uloženým jako dokumenty JSON. Na základech je jazyk navržený tak, aby nativně pracoval s hierarchickými a flexibilními daty a podporoval jednoduché i složité dotazy na dokumenty, které by mohly mít různé struktury.
Dotazy se skládají pomocí známé syntaxe podobné JAZYKu SQL, ale jsou upraveny pro model dokumentu. Tato úprava znamená, že na rozdíl od tradičních relačních databází neexistuje žádné pevné schéma – vlastnosti můžou chybět nebo mají různé typy dokumentů. Jazyk se rozlišují malá a velká písmena a podporuje odkazování na vnořené vlastnosti, pole a objekty přímo v dotazech. K dispozici jsou logické, porovnávací a aritmetické operátory a jazyk je navržený tak, aby byl pro vývojáře s prostředím SQL intuitivní a současně přijímá flexibilitu dat NoSQL.
Dotazovací modul je optimalizovaný pro zajištění vysokého výkonu a škálovatelnosti, který automaticky používá indexy k efektivnímu filtrování, řazení a agregaci dat. Podporuje širokou škálu vzorů dotazů, od jednoduchých vyhledávání až po složité agregace a poddotazy. Díky této podpoře je dotazovací stroj vhodný pro transakční i analytické úlohy. Jazyk také poskytuje konstrukce pro práci s poli, zpracování hodnot null a nedefinovaných hodnot a projektování výsledků v flexibilních obrazcích JSON. Tyto konstrukce umožňují vývojářům načíst přesně data, která potřebují ve formátu požadovaném jejich aplikacemi.
Základní struktura dotazů
Typický dotaz se skládá z následujících klauzulí:
-
SELECT: Určuje, která pole nebo hodnoty se mají vrátit. -
FROM: Identifikuje zdrojový kontejner a může přiřadit alias. -
WHERE: Filtruje dokumenty na základě podmínek. -
ORDER BY: Seřadí výsledky. -
GROUP BY: Seskupí výsledky podle jedné nebo více vlastností.
Příklad: Jednoduchý dotaz
SELECT p.id, p.name
FROM products p
WHERE p.price > 20
ORDER BY p.price ASC
Tento dotaz vrátí id a name produkty s cenou větší než 20 seřazenými podle ceny ve vzestupném pořadí.
Práce s vlastnostmi JSON
K vnořeným vlastnostem můžete přistupovat pomocí zápisu tečky nebo zápisu závorek:
SELECT p.manufacturer.name, p["metadata"].sku
FROM products p
Pole je možné přecházet pomocí JOIN poddotazů nebo poddotazů:
SELECT p.name, c AS color
FROM products p
JOIN c IN p.metadata.colors
Filtrování dat
Klauzule WHERE podporuje širokou škálu operátorů, včetně aritmetických, logických, porovnávaných a řetězcových operací:
SELECT *
FROM products p
WHERE p.category IN ("Accessories", "Clothing") AND p.price BETWEEN 10 AND 50
Agregace a seskupení
Můžete použít agregační funkce a výsledky seskupení:
SELECT p.category, COUNT(1) AS productCount
FROM products p
GROUP BY p.category
Distinct, Top a Like
-
DISTINCTodebere duplicitní hodnoty. -
TOP Nomezuje počet výsledků. -
LIKEpodporuje porovnávání vzorů se zástupnými cardy.
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
Poddotazy umožňují pokročilejší filtrování a projekci, včetně kontroly existence hodnot v polích:
SELECT VALUE p.name
FROM products p
WHERE EXISTS (
SELECT VALUE c FROM c IN p.metadata.colors WHERE c LIKE "%blue%"
)