Files
Snippets/SQL.md
T
2026-04-26 09:06:55 +02:00

5.0 KiB

SQL

Conditions Basics

Manchmal möchten wir Datensätze abrufen, die eine bestimmte Bedingung erfüllen.

Zum Beispiel

  • alle Datensätze abrufen, die den Familiennamen „Aothly“ haben

  • alle Datensätze abrufen, bei denen der Betrag größer als 5 ist

  • Alle Datensätze mit dem Land „Mexico“ abrufen

Um Bedingungen hinzuzufügen, können wir das WHERE-Schlüsselwort verwenden

Zum Beispiel hier ist eine Verkäufe-Tabelle:

Münze Menge
AGK 13
GOL 21
KLA 15
AGK 18

Um alle Datensätze mit der Coin „AGK“ abzurufen, schreibt man:

SELECT * FROM sales WHERE coin = 'AGK'

Um alle Datensätze mit amount kleiner oder gleich 20 abzurufen, schreibt man:

SELECT * FROM sales WHERE amount <= 20

Unique values

Angenommen man hat die folgende Tabelle:

Verkäufe

Land Stadt Betrag
1 Polen Warschau 13
2 Deutschland Berlin 24
3 Polen Katowice 56

Man möchte alle Länder wissen, in denen das Produkt verkauft wurde.

Wenn man die normale Abfrage, die man kennt, verwendet: SELECT country from sales liefert sie Poland, Germany, Poland. Das ist nicht das, wonach man sucht, weil Polen zweimal wiederholt wird.

Um es zu lösen, kann man das DISTINCT-Schlüsselwort verwenden:

NOT

Das NOT-Schlüsselwort bedeutet, dass man nicht möchte, dass die Bedingung erfüllt wird.

Zum Beispiel betrachte man die folgende people-Tabelle:

Name Alter Geschlecht
Joas 13 männlich
Holwa 17 männlich
Nohlas 24 weiblich
Polar 23 männlich
Loopa 18 weiblich

SELECT * FROM people WHERE NOT gender = 'male'

Dies wird das Ergebnis sein:

Name Alter Geschlecht
Nohlas 24 weiblich
Loopa 18 weiblich

Das NOT-Schlüsselwort kehrt die Bedingung im Wesentlichen um. Zum Beispiel sind die folgenden Abfragen gleich:

WHERE age > 20

WHERE NOT age <= 20

AND

Das AND-Schlüsselwort bedeutet, dass beide Bedingungen wahr sein müssen; wenn eine von ihnen nicht der Fall ist, wird die Bedingung nicht erfüllt.

Zum Beispiel ist hier eine people-Tabelle:

Name Alter Geschlecht
Joas 13 männlich
Holwa 17 männlich
Nohlas 24 weiblich
Polar 23 männlich
Loopa 18 weiblich

Die folgende Abfrage:

SELECT * FROM people WHERE gender = "female" AND age < 20

bedeutet, dass man nach allen Datensätzen sucht, bei denen das Geschlecht „female“ ist und das Alter kleiner als 20 ist.

Dies wird das Ergebnis sein:

Name Alter Geschlecht
Loopa 18 weiblich

OR

Das OR-Schlüsselwort bedeutet, dass eine der Bedingungen wahr sein soll.

Zum Beispiel betrachtet man die folgende people-Tabelle:

name age gender
Joas 13 male
Holwa 17 male
Nohlas 24 female
Polar 23 male
Loopa 18 female

SELECT * FROM people WHERE gender = 'female' OR age < 20

Diese Abfrage bedeutet, dass man nach allen Datensätzen sucht, bei denen entweder das Geschlecht weiblich ist oder das Alter unter 20 liegt.

Das wird das Ergebnis sein:

Name Alter Geschlecht
Joas 13 männlich
Holwa 17 männlich
Nohlas 24 weiblich
Loopa 18 weiblich

Sortierung (ORDER BY)

... ORDER BY ASC, das wird standardmäßig gesetzt

ASC --> Aufsteigend --> kleinster Wert zuerst

DESC --> Absteigend --< Größter Wert zuerst

Beispiele und Erklärung

Beim Abfragen einer Datenbank kann die Organisation der Ergebnisse in einer sinnvollen Reihenfolge die Datenanalyse erheblich effizienter machen. Um das Ergebnis zu sortieren, verwendet man das ORDER BY-Schlüsselwort und danach sollte man angeben, nach welchem Feld man sortiert. Standardmäßig sortiert es in aufsteigender Reihenfolge.

Zum Beispiel betrachten Sie die folgende competition-Tabelle:

runner_id age avg_speed
1 47 3.65
2 62 3.07
3 57 6.82
4 56 4.34
5 25 4.93
6 40 3.94
7 23 6.58
8 40 3.43

SELECT * FROM competition WHERE age > 50 ORDER BY avg_speed

Dies ist das Ergebnis

runner_id age avg_speed
2 62 3.07
4 56 4.34
3 57 6.82

Um anzugeben, wie diese Daten sortiert werden sollen, können wir die DESC- oder ASC-Schlüsselwörter nach dem Namen der Spalte hinzufügen.

ORDER BY avg_speed ASC