Daten auswählen mit dem SELECT-Befehl

Die SELECT-Anweisung ist fundamental für jedes Auswählen von Daten und stellt diese in Form einer virtuellen Tabelle zur Verfügung. Diese virtuelle Tabelle, auch Recordset genannt, also eine Menge (= Set) von Records (= Datenzeilen, Datensätzen), existiert zunächst nur temporär im Arbeitsspeicher und wird nach dem Ende der Befehlsausführung verworfen. Wird SELECT ohne weitere Ergänzungen verwendet, so werden die Daten angezeigt. Die Ausgabe kann auch mit SELECT ... INTO ... FROM in eine neue Tabelle kopiert oder mit INSERT INTO ... SELECT ... zu einer bestehenden Tabelle hinzugefügt werden.

Syntax

Beispiele

  1. SELECT A_NR,
    	A_NAME,
    	A_PREIS
    FROM ARTIKEL
    Einfache, kommagetrennte Auflistung der gewünschten Spalten, die im Tabellen-Ausdruck vorkommen. Ohne Alias für die Tabelle.
  2. SELECT A.A_NR,
    	A.A_NAME,
    	A.A_PREIS
    FROM ARTIKEL As A
    ORDER BY A.A_PREIS
    Dasselbe wie im ersten Beispiel, aber mit Aliasname A für die Tabelle und aufsteigender Sortierung nach der Spalte A_PREIS.
  3. SELECT A_NR,
    	A_PREIS  As Netto,
    	0.19 As MwSt,
    	A_PREIS * 1.19 As Brutto
    FROM ARTIKEL
    ORDER BY A_PREIS DESC
    Hier werden Alias-Ausdrücke für die Spalten verwendet - das Ergebnis kennt die drei Spalten Netto, MwSt und Brutto. MwSt ist ein konstanter Wert, in der Spalte Brutto wird der Inhalt von A_PREIS multipliziert mit einer Konstanten. Da ein solches Ergebnis keinen Spaltennamen hat, sollte dieser anschließend festgelegt werden. Das Ergebnis wird nach A_PREIS absteigend sortiert.
  4. SELECT A.* FROM ARTIKEL As A
    ORDER BY A.A_NAME ASC,
    	A.A_PREIS DESC
    Hier wird für die Tabelle ein Alias A verwendet und mit * sämtliche Spalten ausgewählt. Das Ergebnis wird aufsteigend nach den Artikel-Namen, absteigend nach den Artikel-Preisen sortiert.
  5. SELECT DISTINCT A.A_NAME
    FROM ARTIKEL As A
    Das Schlüsselwort DISTINCT entfernt alle mehrfach vorkommenden Zeilen mit Ausnahme einer. Diese Abfrage liefert deshalb nicht vier Zeilen mit doppeltem 'Oberhemd', sondern nur drei Zeilen zurück, eine Zelle mit dem Wert 'Oberhemd' wurde entfernt.
  6. SELECT A.A_NAME
    FROM ARTIKEL As A
    UNION
    SELECT B.V_NAME
    FROM VERTRETER As B
    Diese inhaltlich merkwürdige Abfrage liefert alle Artikel- und alle Vertreter-Namen in einer einzigen Liste aus. Da ALL fehlt, werden sechs Zeilen ausgegeben, das doppelte 'Oberhemd' wird nur einfach in das Resultset übernommen. Beachten Sie, daß die Datentypen übereinstimmen müssen und daß jede einzelne SELECT-Abfrage dieselbe Zahl von Spalten zurückliefern muß. Die Spaltennamen müssen allerdings nicht übereinstimmen, bei den SELECT-Anweisungen ab der zweiten Abfrage kann auf ALIAS-Namen verzichtet werden.
  7. SELECT V.*
    	INTO [Kopie-von-Vertreter]
    FROM VERTRETER As V
    Dies transferiert die virtuelle Tabelle in ein reales neues Tabellenobjekt. Zunächst wird die neue Tabelle 'Kopie-von-Vertreter' erstellt und anschließend mit den Zeilen gefüllt, die von der SELECT-Anweisung zurückgegeben wurden. Ergänzt man diese Abfrage um eine WHERE-Klausel 0 = 1, so werden keine Zeilen kopiert, es wird jedoch eine neue leere Tabelle erstellt.

Bemerkungen


© 2003-2018 Jürgen Auer, Berlin.