Daten aus Tabellen abfragen

In der sehr verkürzten Syntax kann diese Anweisung so aussehen:

SELECTwähle
Feldlistedie angegebenen Felder (mehrere durch Komma getrennt)
FROMder Tabelle
TabelleTabellennahme (mehrere durch Komma getrennt)

Statt der Feldliste können sie auch einen Stern * angeben. Dann sind alle Felder der TabelleNo im Abfrageergebnis enthalten.

Beispiele (Verleger)

Selektion aller Felder der Tabelle Titel
SELECT * FROM Titel
Selektion der Felder A_id und A_nname der Tabelle Autoren
SELECT A_id, A_nname FROM Autoren

Erweiterung mit der WHERE-Klausel

SELECTwähle
Feldlistedie angegebenen Felder (mehrere durch Komma getrennt)
FROMder Tabelle
TabelleTabellennahme (mehrere durch Komma getrennt)
[WHERE]wobei
BedingungBedingung, die einen logischen Wert (True, False) zum Ergebnis haben muss
[AND|OR]und/oder
BedingungBedingung, die einen logischen Wert (True, False) zum Ergebnis haben muss

Beispiele (Verleger)

Alle Titel aus dem Gebiet business
SELECT * FROM Titel WHERE Gebiet = 'business'
Nur die Felder A_id und A_nname aller Autoren, deren Wohnort Oakland ist
SELECT A_id, A_nname FROM Autoren WHERE Ort = 'Oakland'
Alle Titel aus dem Gebiet business und deren Preis höher als 10 € ist
SELECT * FROM Titel WHERE Gebiet = 'business' AND Preis > 10

Suchen mit Wildcards

Über Wildcards können unscharfe Selektionskriterien erstellt werden.

SELECTwähle
Feldlistedie angegebenen Felder (mehrere durch Komma getrennt)
FROMder Tabelle
TabelleTabellennahme (mehrere durch Komma getrennt)
[WHERE]wobei
FeldFeld der Tabelle
[NOT]optionale Verneinung
LIKEso ähnlich wie
Mustergesuchtes Muster mit Wildcards
% steht für eine Zeichenkette beliebiger Länge
_ steht für ein einzelnes Zeichen

Beispiele (Verleger)

Alle Titel, die mit "T" beginnen
SELECT * FROM Titel WHERE Titel LIKE 'T%'
Alle Titel, die NICHT mit "The" beginnen
SELECT * FROM Titel WHERE Titel NOT LIKE 'The%'
Alle Titel, die an der 3. Stelle im Titel ein "e" aufweisen
SELECT * FROM Titel WHERE Titel LIKE '__e%'

Sortieren des Ergebnisses

Eine Ergebnismenge kann sortiert werden, indem der bekannten SELECT-Anweisung die ORDER BY-Klausel hinzugefügt wird.

SELECTwähle
Feldlistedie angegebenen Felder (mehrere durch Komma getrennt)
FROMder Tabelle
TabelleTabellennahme (mehrere durch Komma getrennt)
[WHERE]wobei
BedingungBedingung, die einen logischen Wert (True, False) zum Ergebnis haben muss
[AND|OR]und/oder
BedingungBedingung, die einen logischen Wert (True, False) zum Ergebnis haben muss
[ORDER BY]sortiere das Ergebnis nach
Tabellenfelddas Feld, nachdem sortiert werden soll
[DESC|ASC]DESC = absteigende Sortierreihenfolge
ASC = aufsteigende Sortierreihenfolge (Voreinstellung)

Beispiele (Verleger)

Alle Titel des Gebiets business, sortiert nach dem Titel
SELECT * FROM Titel WHERE Gebiet = 'business' ORDER BY Titel
Nur die Felder A_id und A_nname aller Autoren, deren Wohnort Frankfurt ist, absteigend sortiert nach dem Nachnamen
SELECT A_id, A_nname FROM Autoren WHERE Ort = 'Oakland' ORDER BY A_nname DESC

Berechnung in Abfragen

Mit den Aggregatfunktionen können Berechnungen innerhalb einer Abfrage durchgeführt werden. Häufig verwendete Aggregatfunktionen sind AVG (engl. average = Durchschnitt), MAX (größter Wert), MIN (kleinster Wert), SUM (Summe), COUNT (Anzahl der gruppierten Zeilen). Diese Funktionen werden häufig mit der unten beschriebenen GROUP BY-Klausel verwendet.
Die Syntax der Aggregatfunktionen wird am Beispiel der SUM-Funktion gezeigt:

SELECTwähle
SUM (Feldname)Summe bilden über die Spalte Feldname (der Feldname muss in runden Klammern stehen)
AS Namewird als SpalteName angezeigt(diese Spalte wird zusätzlich in die Abfrage aufgenommen)
FROMder Tabelle
TabelleTabellennahme (mehrere durch Komma getrennt)

Beispiel (Verleger)

Mit Hilfe der SUM-Funktion sollen die Gesamtverkäufe aller verkauften Titel bestimmt werden.
SELECT SUM(Verkäufe) AS Gesamtverkäufe FROM Titel

Gruppieren von Datensätzen

Die GROUP BY-Klausel bewirkt, dass alle Datensätze zusammengefasst werden, deren Feldinhalt dem angegebenen Wert entspricht. Durch die HAVING-Klausel kann die Liste nochmals nach den angegebenen Bedingungen selektiert werden.
... 
GROUP BYgruppiert Datensätze mit gleichen Feldinhalten des Feldes
FeldnameTabellenfeld
HAVINGwelche
BedingungBedingung, die einen logischen Wert (True, False) zum Ergebnis haben muss
[AND|OR]und/oder
BedingungBedingung, die einen logischen Wert (True, False) zum Ergebnis haben muss

Beispiel (Verleger)

Die Titel, die nicht zum Gebiet "business" gehören, werden nach Gebieten gruppiert und die Anzahl der Titel pro Gebiet werden absteigend sortiert angezeigt.
SELECT Gebiet, Count(Titel) AS AnzahlTitel FROM Titel GROUP BY Gebiet
HAVING Gebiet <> 'business' ORDER BY Count(Titel) DESC

Last modified: Wednesday, 14 March 2018, 12:10 PM