====== 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 Spalte ''Einwohner'' haben.// * 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 ''stadt'' enden? * b) Welche Flüsse (Name, Laenge) haben Namen, deren vorletzter Buchstabe ein ''a'' ist? ====== 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 ''I'' beginnt, haben mehr als 100000 Einwohner? * b) Welche Flüsse haben einen Namen, der mit ''u'' oder ''r'' endet? * c) Welche Kontinente haben einen Namen, der **nicht** auf ''a'' endet?