Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Abfragesprache bietet eine leistungsstarke SQL-ähnliche Syntax zum Arbeiten mit JSON-Daten. Diese Sprache ist für Benutzer mit SQL-Erfahrung vertraut und unterstützt gleichzeitig die Flexibilität und hierarchische Natur von JSON-Dokumenten. In diesem Artikel werden die wichtigsten Konzepte, Syntax und Features der Abfragesprache vorgestellt.
Kernkonzepte der Abfragesprache
Die Abfragesprache ist so aufgebaut, dass sie ausdrucksstarke und effizienten Zugriff auf daten bereitstellt, die als JSON-Dokumente gespeichert sind. Die Sprache ist auf der Grundlage darauf ausgelegt, nativ mit hierarchischen und flexiblen Daten zu arbeiten, die einfache und komplexe Abfragen über Dokumente unterstützen, die unterschiedliche Strukturen haben könnten.
Abfragen werden mit einer vertrauten SQL-ähnlichen Syntax zusammengesetzt, aber für das Dokumentmodell angepasst. Diese Anpassung bedeutet, dass im Gegensatz zu herkömmlichen relationalen Datenbanken kein festes Schema vorhanden ist– Eigenschaften können fehlen oder unterschiedliche Typen in dokumentenübergreifend haben. Bei der Sprache wird die Groß-/Kleinschreibung beachtet und das Verweisen auf geschachtelte Eigenschaften, Arrays und Objekte direkt in Abfragen unterstützt. Logische Operatoren, Vergleiche und arithmetische Operatoren sind verfügbar, und die Sprache ist so konzipiert, dass sie für entwickler mit SQL-Erfahrungen intuitiv ist und gleichzeitig die Flexibilität von NoSQL-Daten einbezieht.
Das Abfragemodul ist für hohe Leistung und Skalierbarkeit optimiert und verwendet automatisch Indizes, um Daten effizient zu filtern, zu sortieren und zu aggregieren. Es unterstützt eine vielzahl von Abfragemustern, von einfachen Nachschlagevorgängen bis hin zu komplexen Aggregationen und Unterabfragen. Diese Unterstützung macht das Abfragemodul sowohl für transaktions- als auch für analytische Workloads geeignet. Die Sprache bietet außerdem Konstrukte für das Arbeiten mit Arrays, das Behandeln von Null- und nicht definierten Werten und das Projizieren von Ergebnissen in flexiblen JSON-Shapes. Mit diesen Konstrukten können Entwickler genau die daten abrufen, die sie in dem von ihren Anwendungen benötigten Format benötigen.
Grundlegende Abfragestruktur
Eine typische Abfrage besteht aus den folgenden Klauseln:
-
SELECT: Gibt an, welche Felder oder Werte zurückgegeben werden sollen. -
FROM: Identifiziert den Quellcontainer und kann einen Alias zuweisen. -
WHERE: Filtert Dokumente basierend auf Bedingungen. -
ORDER BY: Sortiert die Ergebnisse. -
GROUP BY: Gruppiert Ergebnisse nach einer oder mehreren Eigenschaften.
Beispiel: Einfache Abfrage
SELECT p.id, p.name
FROM products p
WHERE p.price > 20
ORDER BY p.price ASC
Diese Abfrage gibt die id Produkte mit name einem Preis von mehr als 20 zurück, sortiert nach Preis in aufsteigender Reihenfolge.
Arbeiten mit JSON-Eigenschaften
Sie können mithilfe der Punktnotation oder der Klammernotation auf geschachtelte Eigenschaften zugreifen:
SELECT p.manufacturer.name, p["metadata"].sku
FROM products p
Arrays können mithilfe JOIN oder Unterabfragen durchlaufen werden:
SELECT p.name, c AS color
FROM products p
JOIN c IN p.metadata.colors
Filtern von Daten
Die WHERE Klausel unterstützt eine vielzahl von Operatoren, einschließlich arithmetischer, logischer, Vergleichs- und Zeichenfolgenoperationen:
SELECT *
FROM products p
WHERE p.category IN ("Accessories", "Clothing") AND p.price BETWEEN 10 AND 50
Aggregation und Gruppierung
Sie können Aggregatfunktionen und Gruppenergebnisse verwenden:
SELECT p.category, COUNT(1) AS productCount
FROM products p
GROUP BY p.category
Distinct, Top und Like
-
DISTINCTentfernt doppelte Werte. -
TOP Nbeschränkt die Anzahl der Ergebnisse. -
LIKEunterstützt den Musterabgleich mit Wildcards.
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%"
Unterabfragen
Unterabfragen ermöglichen erweiterte Filter- und Projektionsvorgänge, einschließlich der Überprüfung auf das Vorhandensein von Werten in Arrays:
SELECT VALUE p.name
FROM products p
WHERE EXISTS (
SELECT VALUE c FROM c IN p.metadata.colors WHERE c LIKE "%blue%"
)