SELECT
Abfrage von Daten
DSQL, ESQL, PSQL
[WITH [RECURSIVE] <cte> [, <cte> ...]] SELECT [FIRST m] [SKIP n] [{DISTINCT | ALL}] <columns> FROM <source> [[AS] alias] [<joins>] [WHERE <condition>] [GROUP BY <grouping-list> [HAVING <aggregate-condition>]] [WINDOW <window_definition> [, <window_definition> ...] [PLAN <plan-expr>] [UNION [{DISTINCT | ALL}] <other-select>] [ORDER BY <ordering-list>] [{ ROWS <m> [TO <n>] | [OFFSET n {ROW | ROWS}] [FETCH {FIRST | NEXT} [m] {ROW | ROWS} ONLY] }] [FOR UPDATE [OF <columns>]] [WITH LOCK] [INTO <variables>] <variables> ::= [:]varname [, [:]varname ...]
Die SELECT
-Anweisung ruft Daten aus der Datenbank ab und übergibt sie an die Anwendung oder die einschließende SQL-Anweisung.Daten werden in null oder mehr rows zurückgegeben, die jeweils eine oder mehrere columns oder fields enthalten.Die Summe der zurückgegebenen Zeilen ist der result set der Anweisung.
Die einzigen obligatorischen Teile der SELECT
-Anweisung sind:
-
Das Schlüsselwort
SELECT
, gefolgt von einer Spaltenliste. Dieser Teil gibt an, was Sie abrufen möchten. -
Das Schlüsselwort
FROM
, gefolgt von einem auswählbaren Objekt. Dies teilt der Engine mit, wo Sie sie von beziehen möchten.
In seiner einfachsten Form ruft SELECT
eine Reihe von Spalten aus einer einzelnen Tabelle oder Ansicht ab, wie folgt:
select id, name, address
from contacts
Oder, um alle Spalten abzurufen:
select * from sales
In der Praxis wird eine SELECT
-Anweisung normalerweise mit einer WHERE
-Klausel ausgeführt, die die zurückgegebenen Zeilen begrenzt.Die Ergebnismenge kann durch eine ORDER BY
-Klausel sortiert werden, und FIRST … SKIP
, OFFSET … FETCH
oder ROWS
können die Anzahl der zurückgegebenen Zeilen weiter begrenzen und können - zum Beispiel - sein für die Paginierung verwendet.
Die Spaltenliste kann statt nur Spaltennamen alle Arten von Ausdrücken enthalten, und die Quelle muss keine Tabelle oder Sicht sein: Sie kann auch eine abgeleitete Tabelle, ein allgemeiner Tabellenausdruck (CTE) oder eine auswählbare gespeicherte Prozedur (SP) sein.Mehrere Quellen können in einem JOIN
kombiniert werden und mehrere Ergebnismengen können in einer UNION
kombiniert werden.
Die folgenden Abschnitte behandeln die verfügbaren SELECT
-Unterklauseln und ihre Verwendung im Detail.