Kategorien:

Abfragesyntax

SELECT

SELECT ist sowohl eine Anweisung als auch eine Klausel innerhalb einer SELECT-Anweisung.

  • Die Anweisung SELECT ist die am häufigsten ausgeführte SQL-Anweisung. Sie fragt die Datenbank ab und ruft einen Satz von Zeilen ab.

  • Als Klausel definiert SELECT den von einer Abfrage zurückgegebenen Satz von Spalten.

Syntax

[ ... ]
SELECT [ { ALL | DISTINCT } ]
    {
          [{<object_name>|<alias>}.]*
        | [{<object_name>|<alias>}.]<col_name>
        | [{<object_name>|<alias>}.]$<col_position>
        | <expr>
        [ [ AS ] <col_alias> ]
    }
    [ , ... ]
[ ... ]

Weitere Informationen zu SELECT als Anweisung und zu den anderen Klauseln in dieser Anweisung finden Sie unter Abfragesyntax.

Parameter

ALL | DISTINCT

Gibt an, ob im Resultset Duplikate entfernt werden sollen:

  • ALL schließt alle Werte in das Resultset ein.

  • DISTINCT entfernt doppelte Werte aus dem Resultset.

Standard: ALL

*

Das Sternchen ist eine Abkürzung, um anzugeben, dass die Ausgabe alle Spalten des angegebenen Objekts oder alle Spalten aller Objekte enthalten soll, wenn * nicht mit einem Objektnamen oder Alias qualifiziert ist.

Objektname oder . Alias

Gibt den Objektbezeichner oder den Objektalias an, wie in der FROM-Klausel definiert.

Spaltenname

Gibt den Spaltenbezeichner an, wie in der FROM-Klausel definiert.

$Spaltenposition

Gibt die Position der Spalte (1-basiert) an, wie in der FROM-Klausel definiert. Wenn eine Spalte aus einer Tabelle referenziert wird, darf diese Anzahl die maximale Anzahl von Spalten in der Tabelle nicht überschreiten.

Ausdruck

Gibt einen Ausdruck an, beispielsweise einen mathematischen Ausdruck, der für eine bestimmte Zeile einen bestimmten Wert ergibt.

[ AS ] Spaltenalias

Gibt den Spaltenalias an, der dem resultierenden Ausdruck zugewiesen ist. Dieser wird als Anzeigename in einer SELECT-Liste der obersten Ebene und als Spaltenname in einer Inline-Ansicht verwendet.

Nutzungshinweise

  • Aliasnamen und Bezeichner unterscheiden standardmäßig nicht zwischen Groß- und Kleinschreibung. Um die Groß- und Kleinschreibung zu erhalten, schließen Sie sie in Anführungszeichen (") ein.

  • Ohne eine ORDER BY-Klausel sind die von SELECT zurückgegebenen Ergebnisse eine ungeordnete Menge. Wenn Sie die gleiche Abfrage wiederholt für dieselben Tabellen ausführen, kann dies jedes Mal zu einer anderen Ausgabereihenfolge führen. Wenn die Reihenfolge von Belang ist, verwenden Sie die ORDER BY-Klausel.

  • SELECT kann nicht nur als unabhängige Anweisung verwendet werden, sondern auch als Teil anderer Anweisungen, z. B. INSERT INTO ... SELECT ...;. SELECT kann auch in einer Unterabfrage innerhalb einer Anweisung verwendet werden.

Beispiele

Nachfolgend finden Sie ein paar einfache Beispiele.

Viele Beispiele sind in anderen Teilen der Dokumentation enthalten, einschließlich der detaillierten Beschreibung von Abfragesyntax.

Dieses Beispiel zeigt, wie Sie nach dem Nachnamen eines Mitarbeiters suchen können, wenn Sie seine ID kennen.

SELECT last_name FROM employee_table WHERE employee_ID = 101;

In diesem Beispiel werden alle Mitarbeiter und der Name der Abteilung aufgeführt, in der jeder Mitarbeiter tätig ist. Die Reihenfolge bei der Ausgabe erfolgt nach Abteilungsnamen, und innerhalb der einzelnen Abteilung nach Namen der Mitarbeiter. Diese Abfrage verwendet JOIN, um die Informationen in einer Tabelle mit den Informationen in einer anderen Tabelle zu verknüpfen.

SELECT department_name, last_name, first_name
  FROM employee_table INNER JOIN department_table
    ON employee_table.department_ID = department_table.department_ID
  ORDER BY department_name, last_name, first_name;

Dieses Beispiel zeigt, dass die Ausgabespalten nicht direkt aus den Tabellen in der FROM-Klausel entnommen werden müssen. Die Ausgabespalten können allgemeine Ausdrücke sein. Dieses Beispiel zeigt auch, wie Sie einen Spaltenalias verwenden, damit die Ausgabe einen aussagekräftigen Spaltennamen hat:

-- Assuming that the radius of the circle is 2.0.
SELECT pi() * 2.0 * 2.0 AS area_of_circle;
-- or
SELECT pi() * POW(2.0, 2) AS area_of_circle;