SELECT [DISTINCT] <Name einer Spalte> <Konstante> <Berechnung> <einer der obigen Ausdrücke> As Spaltenalias [, weitere der obigen Ausdrücke] FROM <Ausdruck, der eine Tabelle zurückgibt> As Tabellenalias [WHERE ...] [GROUP BY ...] [HAVING ...] [UNION [ALL]] [Weitere SELECT-Anweisung, welche dieselbe Zahl von Spalten und Datentypen liefert] [ORDER BY [Order-By-Ausdruck] ASC | DESC]] [, weitere Sortierungen]Dies ist die grundlegende Syntax des SELECT-Befehls. Details zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY. Die hiesigen Beispiele behandeln nur den Abschnitt zwischen SELECT und FROM.
SELECT <Name einer Spalte - wie oben > INTO <neue Tabelle> FROM <Ausdruck, der eine Tabelle zurückgibt> As Tabellenalias
SELECT A_NR, A_NAME, A_PREIS FROM ARTIKELEinfache, kommagetrennte Auflistung der gewünschten Spalten, die im Tabellen-Ausdruck vorkommen. Ohne Alias für die Tabelle.
SELECT A.A_NR, A.A_NAME, A.A_PREIS FROM ARTIKEL As A ORDER BY A.A_PREISDasselbe wie im ersten Beispiel, aber mit Aliasname A für die Tabelle und aufsteigender Sortierung nach der Spalte A_PREIS.
SELECT A_NR, A_PREIS As Netto, 0.19 As MwSt, A_PREIS * 1.19 As Brutto FROM ARTIKEL ORDER BY A_PREIS DESCHier 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.
SELECT A.* FROM ARTIKEL As A ORDER BY A.A_NAME ASC, A.A_PREIS DESCHier 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.
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.SELECT A.A_NAME FROM ARTIKEL As A UNION SELECT B.V_NAME FROM VERTRETER As BDiese 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.
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.Select A.A_PREIS * 1.19 As [Aktueller Bruttopreis] FROM ARTIKEL As A
SELECT A.A_NAME, 'aktuell' As Info FROM ARTIKEL As ADies liefert zwei Spalten, die erste Spalte heißt 'A_NAME', die zweite 'Info'. Das Ergebnis enthält vier Zeilen, in der ersten Spalte stehen die Werte aus der Tabelle, die zweite Spalte enthält viermal den Text 'aktuell'.
SELECT A.A_NAME, 1 As [Index] FROM ARTIKEL As A UNION SELECT B.V_NAME, 2 FROM VERTRETER As BEine solche Technik kann nützlich sein, wenn mit UNION die Ausgaben mehrerer SELECT-Anweisungen zusammengefügt werden und eine Information benötigt wird, aus welchem SELECT-Abschnitt die einzelne Zeile stammt.
SELECT U.Umsatz_Nr + 0 As [Umsatz_Nr], U.A_Nr Into [Umsatz-Kopie] FROM UMSATZ As UNun wird die Spalte Umsatz_Nr der neuen Tabelle als Integer definiert.