Lesen#
Überblick#
SELECT-Abfragen in Couchbase werden zum Abrufen von Daten aus Collections verwendet. Diese Abfragen können einfach oder komplex sein und zum Abrufen einzelner Werte, Wertelisten oder sogar komplexer Datenaggregationen verwendet werden. Im Gegensatz zu SQL kann SELECT am Ende einer Abfrage platziert werden, was in vielen Fällen die Lesbarkeit und Verständlichkeit einer bestimmten Abfrage verbessert, nachdem Unterabfragen abgeschlossen wurden. Wenn keine Ergebnisse vorliegen, wird ein leeres JSON-Objekt zurückgegeben.
SELECT#
Die Basis-SELECT-Abfrage gibt alle Werte aus allen Dokumenten in einer Collection zurück. Die Antwort auf diese Anfrage ist ein JSON-Objekt der Standard-Couchbase-Struktur, das Felder enthält, die durch das spezifische Collectionsschema definiert sind.
SELECT * / SELECT *.*#
Die SELECT *-Abfrage gibt alle Werte aus allen Dokumenten in der Collection zurück. Diese Abfrage entspricht einer SELECT-Abfrage ohne Einschränkungen. Sie kann zusammen mit einem Collectionsalis verwendet werden, wenn Ergebnisse aus verschiedenen FROM-Collections angezeigt werden müssen.
SELECT * FROM `hs.nosql.courses`;
SELECT s.* FROM `hs.nosql.students` AS s;
SELECT-Variable#
Eine SELECT-Variablenabfrage gibt den Wert einer Variablen zurück. Die folgende Abfrage gibt beispielsweise den Wert des Titelfelds aus dem ersten Dokument in der hs.nosql.courses
-Collection zurück:
SELECT c.title FROM `hs.nosql.courses` AS c LIMIT 1;
SELECT-Ausdruck#
Eine SELECT-Ausdrucksabfrage gibt den Wert eines Ausdrucks zurück. Die folgende Abfrage gibt beispielsweise eine Liste aller Kurse mit mehr als 100 Studierenden zurück:
SELECT c.title
FROM `hs.nosql.courses` AS c
WHERE COUNT(c.students) > 100;
SELECT DISTINCT#
Die SELECT DISTINCT-Abfrage gibt eine Liste eindeutiger Werte zurück.
Die folgende Abfrage gibt beispielsweise eine Liste aller eindeutigen
Kursnamen aus der hs.nosql.courses
-Collection zurück:
SELECT DISTINCT c.title
FROM `hs.nosql.courses` AS c;
SELECT Variable AS Alias#
Diese Abfrage gibt den Wert einer Variablen mit einem Alias zurück. Die folgende Abfrage gibt beispielsweise eine Liste aller Kurse mit mehr als 100 Studierenden mit dem Alias course_name zurück:
SELECT c.title AS course_name
FROM `hs.nosql.courses` AS c
WHERE COUNT(c.students) > 100;
SELECT-Aggregatfunktion#
Die SELECT Aggregatfunktion-Abfrage gibt einen Aggregatwert zurück.
Wenn der Alias für die Aggregationsfunktion nicht angegeben ist, wird standardmäßig die Variable $ ($1, $2 usw.) generiert.
Die folgende Abfrage gibt beispielsweise die durchschnittliche Anzahl der Studierenden pro Kurs in der Collection hs.nosql.courses
zurück:
SELECT AVG(c.students) AS average_students, c.title AS course_name
FROM `hs.nosql.courses` AS c;
mit dem Ergebnis:
[
{
"$1": 1,
"course_name": "Einführung in SQL"
},
{
"$1": 6,
"course_name": "NoSQL"
}
]
SELECT Verschachtelter Ausdruck#
Diese Abfrage gibt den Wert eines verschachtelten Ausdrucks zurück.
Die folgende Abfrage gibt beispielsweise eine Liste aller Kurse zurück, in denen die Anzahl der Studierenden die durchschnittliche Anzahl der Studierenden pro Kurs in der hs.nosql.courses
-Collection übersteigt:
SELECT c.title
FROM `hs.nosql.courses` AS c
WHERE COUNT(c.students) > (
SELECT AVG(c.students)
FROM `hs.nosql.courses` AS c
);
SELECT Join#
Eine SELECT Join-Abfrage verknüpft Daten aus zwei oder mehr Collections. Die folgende Abfrage gibt beispielsweise eine Liste aller Studierenden zurück, die einen Kurs mit dem Titel Einführung in SQL belegen:
SELECT
s.name,
o.title
FROM `hs.nosql.students` AS s
JOIN `hs.nosql.offers` AS o ON s.id = o.student
WHERE o.course = META(`hs.nosql.courses`).id AND `hs.nosql.courses`.title = "Einführung in SQL";