Die Sprache SQL (Structured Query Language, im englischen Sprachraum oft ausgesprochen als "Sequel") gibt es seit den 1970'er Jahren. Sie hat sich als Standardsprache zum Erstellen, Ändern und Abfragen relationaler Datenbanken etabliert. Im Folgenden wiederholen wir, wie sich mit Hilfe von SQL Informationen aus einer mit gefüllten Tabelle entnehmen lassen.
Grundlegender Aufbau einer SQL-Abfrage:
SELECT spalte1, spalte2, ... FROM tabelle WHERE Bedingung
=
, <
, >
, <
=
, >=
, <>
(ungleich) verwendet werden um Zahlen oder Zeichenketten (lexikalisch!) zu vergleichen.like
verglichen werden. Dann wirken die Zeichen %
und _
(Unterstrich) als Wildcards:%
steht für beliebig viele (auch: 0) beliebige Zeichen_
steht für genau ein beliebiges Zeichen. where name like '_a%'
findet alle Datensätze, bei denen der Spaltenwert für name
als zweiten Buchstaben ein kleines a hat.select meer from fluss
. Mit dem Schlüsselwort distinct
kannst Du erreichen, dass mehrfache identische Ergebniszeilen jeweils nur ein Mal vorkommen: select distinct meer from fluss
Schreibe in der obigen Datenbank SQL-Abfragen, um folgende Fragen zu beantworten:
Aggregatfunktionen (von lat. aggregare: "zusammenfassen") fassen die Daten mehrerer Datensätze zu einem Wert zusammen, z.B. gibt die folgende Abfrage die Summe der Einwohnerzahlen aller Länder aus, deren Name mit D beginnt.
SELECT SUM(einwohner) FROM land WHERE name LIKE 'D%'
Bem.: Wundere Dich nicht über das niedrige Ergebnis: Die Einwohnerzahlen der Länder sind in der Tabelle Land übrigens in der Einheit "Millionen" gespeichert.
Folgende Aggregatfunktionen gibt es in SQL:
sum(Spalte)
: Summe der Werte in dieser Spaltemin(Spalte)
: Kleinster Wert in dieser Spaltemax(Spalte)
: Größter Wert in dieser Spalteavg(Spalte)
(Mittelwert dieser Spalte, engl. "average")
Eine besondere Rolle spielt die Aggregatfunktion count(Spalte)
: Sie gibt die Anzahl der Werte in dieser Spalte zurück. Üblicherweise wird nur count(*)
verwendet, das die Anzahl der Datensätze zurückgibt.
Schreibe in der obigen Datenbank SQL-Abfragen, um folgende Fragen zu beantworten:
Durch den Zusatz order by
kann man die Datensätze in der Ergebnistabelle sortieren lassen, z.B. gibt die folgende Abfrage eine Tabelle mit den Namen und Einwohnerzahlen aller Orte zurück, deren Name mit D beginnt, wobei die Datensätze nach dem Ortsnamen sortiert werden:
SELECT name, einwohner FROM land WHERE name LIKE 'D%' ORDER BY name
Will man in umgekehrter Reihenfolge sortieren, so setzt man noch desc
(engl.: "descending") dahinter. Steht nichts hinter dem order
-Zusatz, so ist asc
(engl. "ascending") gemeint:
SELECT name, einwohner FROM land WHERE name LIKE 'D%' ORDER BY name DESC
Schreibe in der obigen Datenbank SQL-Abfragen, um folgende Fragen zu beantworten:
Der Zusatz group by Spalte
gruppiert alle Datensätze mit demselben Wert in der angegebenen Spalte. Nach select
kann man in diesem Fall sinnvollerweise natürlich nur noch den Wert dieser Spalte sowie Aggregate (z.B. die Summe) der anderen Spalten angeben.
Beispiel: Gib die Summe der Einwohnerzahlen aller Länder der einzelnen Kontinente zusammen mit dem Kürzel des Kontinents aus:
SELECT SUM(einwohner), knr FROM land GROUP BY knr
Will man nur bestimmte Kontinente haben (z.B. alle, deren Kürzel mit A beginnt), so kann man diese Bedingung in einem having
-Zusatz angeben:
SELECT SUM(einwohner), knr FROM land GROUP BY knr HAVING knr LIKE 'A%'
Schreibe in der obigen Datenbank SQL-Abfragen, um folgende Fragen zu beantworten: