-- english, deutsch, russian --
Syntax
Beschreibung:
Die SELECT-Anweisungen rufen Daten aus den Tabellen einer oder, in bestimmten Fällen, auch
mehrerer Datenbanken ab. SELECT liefert eine Ergebnistabelle, die in diesem Befehl aus den Tabellen der
gerade aktiven Datenbank erzeugt wird. Mit SELECT kann mann z.B: nur bestimmte
Datensätze einer Tabelle auswählen oder Summen der Felder erzeugen, oder auch
eine neue Ergebnistabelle aus mehreren Ausgangstabellen ertsellen.
DISTINCT
DISTINCT teilt dem DBMS mit nur unterschiedliche Datensätze auszuwählen.
Auswahl doppelter Datensätze wird somit vermieden.
Beispiel:
SELECT DISTINCT vnum
FROM torder;
Als Ergebnismenge werden hier alle unterschiedlichen Werte des Feldes vnum aus
der Tabelle torder selektiert.
FROM { [OUTER] Tabellenname [ Alias ] } [,...]
Mit FROM wird dem DBMS mitgeteilt aus welchen Tabellen der Datenbank
die Datensätze selektiert werden.
Das Schlüsselwort OUTER wird verwendet, wenn bei der Vernküpfung mehrerer Tabellen, die Daten der führenden Tabelle auch dann angezeigt werden sollen, wenn in den anderen Tabellen keine Daten da sind. Diese werden dann mit OUTER vor dem Tabellennamen gekennzeichnet, die Join-Bedingung bzw. die Tabellenverknüpfung wird bei dieser Syntax in der WHERE-Klausel beschrieben. Siehe weiteres unter der Beschreibung der einzelnen Join-Typen (left join, left outer join, right join, right outer join).
Beispiel:
SELECT vnum
FROM torder;
Als Ergebnismenge werden hier die Werte des Feldes vnum aus allen Datensätzen
der Tabelle torder selektiert.
WHERE Bedingung
SELECT tkunden.knum, tverkauf.vnum, tverkauf.prov
FROM tkunden, tverkauf
WHERE tkunden.vnum=tverkauf.vnum;
Als Ergebnismenge wird hier eine Tabelle aus den Feld knum der Ausgangstabelle
tkunden und den Feldern vnum und prov der Ausgangstabelle tverkauf generiert,
wo über die WHERE-Bedingung sichergestellt ist, daß in den Datensätzen der
Ergebnistabelle nur die zu den knum passenden vnum und prov stehen.

GROUP BY { Feldname |
Integer } [,...]
GROUP BY wird häufig im Zusammenhang mit den Aggregierungs-Funktionen
benutzt um diese nur auf bestimmte Gruppen von Datensätzen wirken zu lassen. An Stelle
des Feldnamens kann hier die Nummer des Feldes in der Liste der zu selektierenden Felder
benutzt werden.
Beispiel:
SELECT vnum, MAX(preis)
FROM torder
GROUP BY vnum;
Als Ergebnismenge werden hier die maximalen Werte des Feldes preis pro gefundene
Datensatzgruppe mit gleicher vnum ausgewählt.

HAVING Bedingung
HAVING wird innerhalb von GROUP benutzt um nur bestimmte Gruppen auszuwählen,
die die nachgestellte Begingung erfüllen.
Beispiel:
SELECT vnum, MAX(preis)
FROM torder
GROUP BY vnum
HAVING AVG(preis)>10
Aus der Ergebnismenge der Gruppierung aller datensästze mit gleicher vnum,
wo zu einem Schlüssel vnum alle preise aufsummiert werden,
werden hier nur die herausgefiltert, wo der druchschnittliche Preis > 10 ist.

ORDER BY { Feldname |
Integer [ ASC|DESC ] } [,...]
ORDER BY sortiert die Datensätze der Ergebnismenge. Wenn ORDER BY innerhalb des
GROUP BY Befehles benutzt wird, dann werden die Datensätze innerhalb der
einzelnen Datensatzgruppen sortiert. An Stelle des Feldnamens kann hier die Nummer
des Feldes in der Liste der zu selektierenden Felder benutzt werden. ASC sortiert die Datensätze in aufsteigender Reihenfolge, DESC in absteigender.
Beispiel:

UNION [ALL] SELECT-Befehl
UNION wird verwendet um zwei oder mehrere Abfragen (SELECT-Befehle) in eine
Ergebnistabelle zusammenzuführen. Dabei müssen die Feldlisten der
auszuwählenden Felder in den SELECT-Befehlen kompatibel sein. Wenn ALL nicht
angegeben ist werden doppelte Datensätze aus dem Ergebniss entfernt. Mit UNION
werden die Ergebnisse beider SELECT-Befehle in das Resultat aufgenommen.
Beispiel:
SELECT vnum, vname
FROM tverkauf
WHERE stadt='Berlin'
UNION
SELECT knum, kname
FROM tkunden
WHERE stadt='Berlin'
ORDER BY 1;
Hier wird eine Abfrage-Tabelle erzeugt, die alle v- und knum, sowie v- und
kname entählt, wo stadt gleich Berlin ist und das Egrebnis nach der ersten
Spalte sortiert ist. Doppelte Datensätze werden eliminiert.

INTERSECT [ALL] SELECT-Befehl
| ANSI | DB2 | Informix | Oracle | SQL Server | Interbase |
| nein | ja | ja | ja | ? | ? |
INTERSECT wird verwendet um zwei oder mehrere Abfragen (SELECT-Befehle) in eine
Ergebnistabelle zusammenzuführen. Dabei müssen die Feldlisten der
auszuwählenden Felder in den SELECT-Befehlen kompatibel sein. Wenn ALL nicht
angegeben ist werden doppelte Datensätze aus dem Ergebniss entfernt. Mit
INTERSECT werden die Datensätze in das Ergebniss aufgenommen, die sowohl im
ersten SELECT-Befehl, wie auch im zweitem SELECT-Befehl enthalten sind.
Beispiel:
SELECT vnum, vname
FROM tverkauf
WHERE stadt='Berlin'
INTERSECT
SELECT knum, kname
FROM tkunden
WHERE stadt='Berlin'
ORDER BY 1;
Hier wird eine Abfrage-Tabelle mit allen Verkäufern, die gleichzeitig auch Kunden
sind, erzeugt. Das Egrebnis nach der ersten Spalte sortiert ist.
Doppelte Datensätze werden eliminiert.

EXCEPT [ALL] SELECT-Befehl
Wichtig: in einigen SQL-Dialekten wird anstatt EXCEPT -
MINUS oder DIFFERENCE verwendet, die Syntax bleibt aber gleich.
| ANSI | DB2 | Informix | Oracle | SQL Server | Interbase |
| nein | ja | nein | ? | ? | ? |
EXCEPT wird verwendet um zwei oder mehrere Abfragen (SELECT-Befehle) in eine
Ergebnistabelle zusammenzuführen. Dabei müssen die Feldlisten der
auszuwählenden Felder in den SELECT-Befehlen kompatibel sein. Wenn ALL nicht
angegeben ist werden doppelte Datensätze aus dem Ergebnis entfernt. Mit
EXCEPT werden die Datensätze in das Ergebniss aufgenommen, die im
ersten SELECT-Befehl enthalten sind, aber nicht im zweitem SELECT-Befehl vorkommen.
Beispiel:
SELECT vnum, vname
FROM tverkauf
WHERE stadt='Berlin'
EXCEPT
SELECT knum, kname
FROM tkunden
WHERE stadt='Berlin'
ORDER BY 1;
Hier wird eine Abfrage-Tabelle mit allen Verkäufern, die nicht gleichzeitig auch Kunden
sind, erzeugt. Das Egrebnis nach der ersten Spalte sortiert ist.
Doppelte Datensätze werden eliminiert.

INTO TEMP Tabellenname
| ANSI | DB2 | Informix | Oracle | SQL Server | Interbase |
| nein | ja | ja | ? | nein | nein |
INTO {TEMP|SCRATCH} wird verwendet um eine temporäre Tabelle zu erzeugen, die nach Beenden
der SQL-Session gelöscht wird. Wird häfig zur optimierung von Abfragen verwendet.

Bookmark/Search this post with