From 6ed6c08abd06ed5467893bafd9ab2bff671645fa Mon Sep 17 00:00:00 2001 From: Sven Riwoldt Date: Sat, 25 Apr 2026 20:48:40 +0200 Subject: [PATCH] SQL Distinct etc --- SQL.md | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 79 insertions(+), 4 deletions(-) diff --git a/SQL.md b/SQL.md index e010d89..696e709 100644 --- a/SQL.md +++ b/SQL.md @@ -1,9 +1,84 @@ # SQL -## Distinct -Dubletten verhindern +## Conditions Basics -`select distinct …` +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 wir kennen, verwenden: `SELECT country from sales` liefert sie `Poland`, `Germany`, `Poland`. Das ist nicht das, wonach wir suchen, weil Polen zweimal wiederholt wird. + +Um es zu lösen, können wir 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` ## Vorrang @@ -17,7 +92,7 @@ Dubletten verhindern `DESC` --> Absteigend --< Größter Wert zuerst ### Beispiele und Erklärung -Beim Abfragen einer Datenbank kann die Organisation Ihrer Ergebnisse in einer sinnvollen Reihenfolge die Datenanalyse erheblich effizienter machen. Um das Ergebnis zu sortieren, verwenden wir das ORDER BY-Schlüsselwort und danach sollten wir angeben, nach welchem Feld wir sortieren. Standardmäßig sortiert es in aufsteigender Reihenfolge. +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: