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:

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:

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: