Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A lekérdezési nyelv hatékony, SQL-szerű szintaxist biztosít a JSON-adatok kezeléséhez. Ez a nyelv úgy lett kialakítva, hogy megismerje az SQL-élményt használó felhasználókat, ugyanakkor támogatja a JSON-dokumentumok rugalmasságát és hierarchikus jellegét. Ez a cikk bemutatja a lekérdezési nyelv alapvető fogalmait, szintaxisát és funkcióit.
A lekérdezési nyelv alapvető fogalmai
A lekérdezési nyelv úgy készült, hogy kifejező és hatékony hozzáférést biztosítson a JSON-dokumentumokban tárolt adatokhoz. A nyelv alapja, hogy natív módon működjön a hierarchikus és rugalmas adatokkal, és egyszerű és összetett lekérdezéseket is támogat a különböző struktúrákat tartalmazó dokumentumokon.
A lekérdezések egy jól ismert SQL-szerű szintaxissal vannak összeállítva, de a dokumentummodellhez vannak igazítva. Ez az adaptáció azt jelenti, hogy a hagyományos relációs adatbázisoktól eltérően nincs rögzített séma – a tulajdonságok hiányoznak, vagy különböző típusúak lehetnek a dokumentumokban. A nyelv megkülönbözteti a kis- és nagybetűket, és közvetlenül a lekérdezéseken belül támogatja a beágyazott tulajdonságokra, tömbökre és objektumokra való hivatkozásokat. Logikai, összehasonlítási és aritmetikai operátorok érhetők el, és a nyelv úgy lett kialakítva, hogy intuitív legyen az SQL-tapasztalattal rendelkező fejlesztők számára, miközben a NoSQL-adatok rugalmasságát is átfogalmazták.
A lekérdezési motor nagy teljesítményre és méretezhetőségre van optimalizálva, automatikusan indexekkel szűri, rendezi és összesíti az adatokat. A lekérdezési minták széles skáláját támogatja, az egyszerű keresésektől az összetett összesítésekig és al lekérdezésekig. Ez a támogatás alkalmassá teszi a lekérdezési motort a tranzakciós és az elemzési számítási feladatokhoz is. A nyelv szerkezeteket is biztosít a tömbök kezeléséhez, a null és a nem definiált értékek kezeléséhez, valamint az eredmények rugalmas JSON-alakzatokban való kivetítéséhez. Ezek a szerkezetek lehetővé teszik a fejlesztők számára, hogy pontosan az alkalmazások által igényelt formátumban kérjék le a szükséges adatokat.
Egyszerű lekérdezési struktúra
Egy tipikus lekérdezés a következő záradékokból áll:
-
SELECT: Megadja, hogy mely mezőket vagy értékeket adja vissza. -
FROM: Azonosítja a forrástárolót, és aliast rendelhet hozzá. -
WHERE: Feltételek alapján szűri a dokumentumokat. -
ORDER BY: Rendezi az eredményeket. -
GROUP BY: Az eredményeket egy vagy több tulajdonság szerint csoportosítja.
Példa: Egyszerű lekérdezés
SELECT p.id, p.name
FROM products p
WHERE p.price > 20
ORDER BY p.price ASC
Ez a lekérdezés a id 20-nál nagyobb árat tartalmazó termékek és name termékek értékét adja vissza növekvő sorrendben, ár szerint rendezve.
JSON-tulajdonságok használata
A beágyazott tulajdonságokat pont-jelöléssel vagy szögletes zárójel jelöléssel érheti el:
SELECT p.manufacturer.name, p["metadata"].sku
FROM products p
A tömbök bejárhatók az alábbiak használatával JOIN vagy albekérdezésekkel:
SELECT p.name, c AS color
FROM products p
JOIN c IN p.metadata.colors
Adatok szűrése
A WHERE záradék számos operátort támogat, beleértve az aritmetikai, logikai, összehasonlítási és sztringműveleteket:
SELECT *
FROM products p
WHERE p.category IN ("Accessories", "Clothing") AND p.price BETWEEN 10 AND 50
Összesítés és csoportosítás
Aggregátumfüggvényeket és csoporteredményeket használhat:
SELECT p.category, COUNT(1) AS productCount
FROM products p
GROUP BY p.category
Eltérő, Felső és Hasonló
-
DISTINCTeltávolítja az ismétlődő értékeket. -
TOP Nkorlátozza az eredmények számát. -
LIKEtámogatja a helyettesítő karakterekkel való mintaegyezést.
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
Az albekérdezések lehetővé teszik a speciális szűrést és kivetítést, beleértve a tömbök értékeinek meglétének ellenőrzését is:
SELECT VALUE p.name
FROM products p
WHERE EXISTS (
SELECT VALUE c FROM c IN p.metadata.colors WHERE c LIKE "%blue%"
)