SELECT: Vertikale Einschränkungen, Vergleichsoperatoren, LIKE
Hinweise zu WHERE-Bedingungen
Geben Sie den Schüler/innen den Hinweis, dass wir in SQLite Werte immer mit Hochkommata umgeben können, auch wenn das bei numerischen Typen nicht notwendig ist.
NOT
und !=
kann man weglassen oder sehr schnell behandeln, da diese nicht obligat sind und auch anderweitig realisiert werden können.
Datumsangaben sollte man sehr lautstark erklären, da im Folgenden eine Menge Aufgaben kommen, die Datumsangaben beinhalten ("… alle Personen, die älter sind als 28 Jahre …"). Sehr wichtig ist hier auch der Hinweis, dass wir uns im Jahr 2034 befinden und die Datenbank nur Daten aus dem Jahr 2033 enthält.
LIKE
und %
- eine alte Plage. Wenn Sie das erklären, lassen Sie jede/n Schüler/in einmal sagen: "Like immer mit %". Wirklich. Dann merken die sich das. Sonst nicht.
Smith, in Maulwurfstadt wohnen offensichtlich einige Mitglieder der terroristischen Vereinigung Dark Millenium Force. Über unsere Datenbank können wir sie finden.
Ein Zeuge hat einen rothaarigen Mann mit blauen Augen gesehen, außerdem eine sehr große, alte Frau und ◼️◼️◼️◼️◼️◼️◼️ ◼️◼️◼️ ◼️◼️◼️◼️◼️◼️ ◼️◼️ ◼️◼️◼️◼️◼️◼️ ◼️◼️◼️ ◼️◼️ ◼️◼️◼️◼️◼️ ◼️◼️◼️◼️ ◼️◼️ ◼️◼️◼️ ◼️◼️◼️◼️◼️◼️ ◼️◼️ ◼️◼️◼️◼️◼️ ◼️◼️◼️ ◼️◼️ ◼️◼️◼️◼️◼️◼️◼️ ◼️◼️◼️ ◼️◼️◼️◼️. Geben Sie Ösal ein paar Namen!
Hä? Was will sie? Sie will nicht alle … alle …
Datensätze. Sie will nicht alle 900 Bürger, sondern nur die, die bestimmte Eigenschaften haben.
Rote Haare 🧑🦰 zum Beispiel.
Richtig.
Und wie mache ich das? Könntest du es mir vielleicht aufschreiben?
Diese Behörde verkommt zu einem Stall voller Sklaven. ⛓️ Der eine trägt von morgens bis abends Briefe ✉️ durch die Gegend, hündisch 🐕 und devot -
Ich bitte doch sehr!
- der nächste schreibt dauernd irgendwelche Anleitungen ✍🏻 , und der Dritte liegt in seinem Büro und pennt. 🛌 Na prima.
Einschränkungen mit WHERE
Also. Jetzt willst du zum Beispiel nur alle Leute mit schwarzen Haaren sehen. Dann schreibst du:
select *
from personen p
where p.haarfarbe = 'schwarz';
Vergleichsoperatoren
Du kannst auch Vergleichsoperatoren wie = , < , > , <= (kleiner-gleich) , >= (größer-gleich) und != (ungleich) arbeiten. Z. B.
select *
from personen p
where p.koerpergroesse >= '180';
Statt != kannst du auch NOT verwenden. Die beiden folgenden Abfragen bewirken das gleiche:
select *
from personen p
where p.koerpergroesse != '180';
select *
from personen p
where NOT p.koerpergroesse = '180';
Hochkommata
Grundsätzlich schreibst du Zeichenketten (Texte) und Datumsangaben in einfache Hochkommata (Shift + #), aber du kannst fast alles in Hochkommata setzen, auch Zahlen.
Datumsangaben
Datumsangaben sind übrigens im Format JJJJ-MM-TT. Der 24.12.2000 ist also '2000-12-24'. Beispiel für eine Abfrage:
select *
from personen p
where p.geburtsdatum < '2000-12-24';
Platzhalter %
Du kannst auch mit Platzhaltern arbeiten. Der wichtigste Platzhalter bei SQL ist das Prozentzeichen (%) - das steht für kein, ein oder mehrere beliebige Zeichen. Das geht so:
select *
from personen p
where p.nachname like 'hen%';
Damit findest du alle Personen, deren Nachname mit den Buchstaben h,e,n beginnt - also Henschel, Henkel, Hen und Henrichs.
Wichtig: Wenn du Platzhalter verwendest, MUSST du LIKE schreiben. Mit
falsch!
select *
from personen p
where p.nachname = 'hen%';
suchst du nach einer Person, die genau Hen% mit Nachnamen heißt. »Hallo, Herr Hen%.« »Wie geht es Ihnen, Frau Hen%?« Also merk dir: like und % gehen immer zusammen!
LIKE kannst du invertieren mit NOT:
select *
from personen p
where p.nachname NOT LIKE 'hen%';
Ich kann mir nie den Unterschied zwischen Größer- und Kleinerzeichen merken.
Eselsbrücke: Male vor das Zeichen einen senkrechten Strich - wenn es ein "k" gibt, ist es "kleiner".
Hä?
Na - |< sieht aus wie ein "k". |> sieht NICHT aus wie ein "k".
Ah! Das kann ich mir gut merken! Ich kannte bisher immer nur die Größer-Kleinerzeichen-Eselsbrücke mit dem Krokodil. Die habe ich aber nie richtig verstanden.
*stöhn (ab)
Also … Mal schauen …
- Ich suche alle Personen mit schwarzen Haaren.
- Dann suche ich alle Personen mit blauen Augen.
- Und alle Personen, die keine blauen Augen haben. Da kann ich dann mit != oder mit NOT arbeiten.
- Alle sehr großen Personen, aber von denen reicht Nachname, Vorname und Körpergröße.
- Alle Männer. Am besten nur Nachname und Geschlecht ausgeben, sonst spinnt Rousseau wieder rum.
- Alle Frauen, auch hier reicht bestimmt Nachname und Geschlecht.
- Alle sehr alten Personen. Hm, da müsste das Geburtsdatum dann …größer oder kleiner als 1950 sein?!? Oder als '1950-01-01'?!?? Mal ausprobieren …
- Alle Personen, deren Nachname mit einem M beginnt. Aha, da muss ich wohl mit like arbeiten …
- Alle Personen, die in einer Straße wohnen, deren Bezeichnung mit "allee" endet.
- Das ist ja spannend! Mal schauen, ob der Weihnachtsmann auch da wohnt: Welche Personen haben an Heiligabend Geburtstag?
Hey! Ösal! Würdest du freundlicherweise deiner Herrin 👸 diese Listen bringen?
Und jetzt mache ich endlich mal ein Schläfchen …
Die Maulwurfstadt
Ein streng geheimes Projekt: In einem kleinen Dorf testet das Cyber-HQ eine neue Überwachungssoftware …