Inhaltsverzeichnis
Einfache Select-Anweisungen
In den vorhergehenden Kapiteln haben wir Tabellen erstellt und mit Daten befüllt. Jetzt lernen wir, wie wir "Fragen" über eine Tabelle an die Datenbank stellen können. Dazu dient die Select-Anweisung.
Die Select-Anweisung ist folgendermaßen aufgebaut:
SELECT spalte1, spalte2, ... FROM tabelle WHERE Bedingung
Bedingung ist dabei eine Aussage, d.h. ein Term, dessen Wert true oder false ist.
Probiere die folgenden Anweisungen in der nachfolgenden Terra-Datenbank aus:
SELECT name FROM fluss; SELECT name, laenge FROM fluss; SELECT name, laenge FROM fluss WHERE meer = 'Nordsee'
Aufgabe 1
Erstelle je eine select-Anweisung, die mit Hilfe der Terra-Datenbank die folgenden Fragen beantwortet:
- a) Welche Flüsse (Name, Meer, Laenge) sind länger als 1000 km?
- b) Welche Länder haben weniger als 10 Millionen Einwohner?
Tipp: Versuche erst einmal herauszufinden, welche Einheit die Werte in der SpalteEinwohnerhaben. - c) Welche Länder (Name, Einwohner) liegen in Europa?
Zeichenketten-Vergleiche mit Wildcards
Oft möchte man beispielsweise eine Ergebnistabelle mit allen Städten, deren Name mit dem Zeichen A beginnt. Dies kann man erreichen, indem man nicht den Operator =, sondern den Operator like zum Vergleich zweier Zeichenketten verwendet. Dann gibt es nämlich zwei Wildcards genannte Spezialzeichen:
- Das Zeichen
%steht für beliebig viele (d.h. eventuell auch 0) beliebige Zeichen. - Das Zeichen
_steht für genau ein beliebiges Zeichen.
Beispiel 1: Alle Städte, deren Name mit dem Zeichen A beginnt:
SELECT name FROM ort WHERE name LIKE 'A%';
Beispiel 2: Alle Flüsse, deren zweiter Buchstabe ein o ist:
SELECT name FROM fluss WHERE name LIKE '_o%';
Aufgabe 2:
Erstelle select-Anweisungen, die die folgenden Fragen beantworten:
- a) Welche Städte (Name, Einwohnerzahl) haben Namen, die auf
stadtenden? - b) Welche Flüsse (Name, Laenge) haben Namen, deren vorletzter Buchstabe ein
aist?
Verknüpfung von Bedingungen
Mit den Operatoren and und or kann man Bedingungen verknüpfen, mit dem Operator not kann man eine Bedingung negieren:
- Bedingung1 and Bedingung2
… hat genau dann den Wert true, wenn sowohl Bedingung1 als auch Bedingung2 den Wert true hat. - Bedingung1 or Bedingung2
… hat genau dann den Wert true, wenn mindestens eine der beiden Bedingungen den Wert true hat. - not Bedingung1
… hat genau dann den Wert true, wenn Bedingung1 den Wert false hat.
Beispiele:
a) Alle Flüsse, die länger als 100 km sind und deren Name mit D beginnt:
SELECT name FROM fluss WHERE laenge > 100 AND name LIKE 'D%';
b) Alle Flüsse, deren Name mit P der D beginnt:
SELECT name FROM fluss WHERE name LIKE 'P%' OR name LIKE 'D%';
c) Alle flüsse, deren Name nicht mit D beginnt:
SELECT name FROM fluss WHERE NOT name LIKE 'D%';
Aufgabe 3
Erstelle select-Anweisungen, die die folgenden Fragen beantworten:
- a) Welche Städte, deren Name mit
Ibeginnt, haben mehr als 100000 Einwohner? - b) Welche Flüsse haben einen Namen, der mit
uoderrendet? - c) Welche Kontinente haben einen Namen, der nicht auf
aendet?