Logo Wissenstransfer Gerhard at CichnaDotCom

>> Wissensdatenbank / Datenmodellierung und Datenbanksysteme

Datenbankanfragen an genau eine Tabelle

Daten abfragen (SELECT)

Daten aus einer Tabelle einer Datenbank abzufragen, ist eine Read-only-Operation, d. h. der aktuell gespeicherte Datenbestand wird dabei nicht verändert. Der SQL-Befehl für eine Datenbankabfrage lautet SELECT. Mit Hilfe von SELECT kann der Inhalt einer oder mehrerer Tabellen ausgegeben werden.

Allgemeiner Aufbau von SELECT

Ein SELECT-Befehl besteht aus den in untenstehender Tabelle "Elemente eines SELECT-Befehls" dargestellten, teilweise optionalen Elementen. Das in folgender Abbildung dargestellte Beispiel enthält einen einfachen SQL-Befehl (auch: SQL-Statement) zur Abfrage aller Länder und ihrer Hauptstädte aus der Beispieldatenbank Country.
Abbildung: Beispiel für einfache SELECT-Anfrage

Ergebnis (Auszug)
Name Capital
Australia Canberra
Bolivia La Paz
Brazil Brasilia
Canada Ottawa
... ...

Ein gültiges SELECT-Statement besteht mindestens aus den Elementen SELECT und FROM. Alle anderen Elemente sind optional. Das Ende eines SELECT-Statements wird durch ein Semikolon ";" markiert. Das Ergebnis von SELECT ist eine virtuelle Tabelle, die alle Datensätze der Ergebnismenge enthält. Welche Spalten in der Ergebnistabelle enthalten sind, wird im SELECT-Statement definiert. Die Ergebnistabelle kann zum Beispiel bei verschachtelten SELECT-Statements wie eine Datenbanktabelle weiterverwendet werden, sie wird jedoch nicht in der Datenbank gespeichert.

Elemente eines SELECT-Befehls
Elemente von SELECT Beschreibung
SELECT liste der spalten Namen der Spalten, die ausgegeben werden sollen; mit * werden alle Spalten der angefragten Tabelle ausgegeben;
die Reihenfolge der Spalten entspricht der Reihenfolge der Spalten der angefragten Tabelle
FROM tabelle Name der Tabelle, in der gesucht wird; später werden auch Anfrage an mehrere Tabellen gestellt
optional:
WHERE auswahlbedingung
Bedingungen, die erfüllt sein müssen, damit ein Datensatz bei der Ermittlung der Antwort berücksichtigt wird;
schränkt die Ergebnismenge ein
optional:
GROUP BY liste von spalten
Fasst Elemente des Ergebnisses in Gruppen zusammen, für die gezielte Einschränkungen oder Berechnungen
erfolgen können
optional, falls eingesetzt immer zusammen mit
GROUP BY:
HAVING bedingung
Bedingungen, die von Elementen einer Gruppe erfüllt sein müssen
optional:
ORDER BY liste von spalten
Sortierkriterium, nach denen das Ergebnis dieser Abfrage sortiert wird

Das Statement SELECT erwartet als Parameter eine Liste von Spalten, die im Ergebnis angezeigt werden sollen. Sollen alle Spalten ausgegeben werden, so wird das mit dem Zeichen * formulierten. Folgendes Statement gibt den gesamten Inhalt der Tabelle Country. aus:

SELECT * FROM Country;

Ergebnis (Auszug)
Name Code Capital Province Area Population Continent Percentage
Australia AUS Canberra Australia Capital Territory 7686850 18260863 Australia/Oceania 100
Bolivia BOL La Paz Bolivia 1098580 7165257 America 100
Brazil BR Brasilia Distrito Federal 8511960 162661214 America 100
Canada CDN Ottawa Ontario 9976140 28820671 America 100
... ... ... ... ... ... ... ...

Eliminierung von Doubletten im Ergebnis (DISTINCT)

Häufig kommt es vor, dass in der Ergebnismenge einer Datenbankanfrage Datensätze mehrfach vorkommen. Ein typisches Beispiel ist das mehrfache Vorkommen von Orten oder Postleitzahlen in einem Kundendatenbestand. Falls nur die Menge der Orte relevant ist, aus denen die Kunden stammen, stören doppelte Vorkommen. Insbesondere dann, wenn die Anzahl von eindeutigen Ergebnisdatensätzen benötigt wird, beispielsweise die Anzahl der Orte im Kundenbestand. Identische Datensätze im Ergebnis einer SQL-Anfrage können mit DISTINCT zusammengefasst werden. Identisch bedeutet, dass alle Attribute eines Datensatzes identisch sind. Folgendes Beispiel gibt alle in der Liste der Länder vertretene Kontinente aus.

SQL-Statement
SELECT DISTINCT Continent FROM Country;

Ergebnis
Continent
Australia/Oceania
America
Asia
Europe
Africa

Ohne DISTINCT würde für jeden Datensatz in der Tabelle das Attribut Continent ausgegeben. Mit DISTINCT werden alle mehrfach vorkommenden Kontinente auf einen Datensatz reduziert.