Benutzer-Werkzeuge

Webseiten-Werkzeuge


it-themen:allgemein:sql_spickzettel

Dies ist eine alte Version des Dokuments!


SQL-Spickzettel

Dieser Spickzettel fasst die wichtigsten SQL-Grundbefehle und deren Reihenfolge zusammen. Er eignet sich ideal zur Prüfungsvorbereitung (AP1 / AP2) und als tägliche Referenz.


Grundstruktur

Die Standard-Struktur einer SQL-Abfrage folgt immer derselben Reihenfolge:

```sql SELECT … FROM … WHERE … GROUP BY … HAVING … ORDER BY … LIMIT …; ```

Merke: Wenn du die Struktur immer vollständig aufschreibst, kannst du danach Schritt für Schritt alles ergänzen und Unnötiges streichen.

—

SchlĂĽsselbefehle im Ăśberblick

SchlĂĽsselwort Bedeutung Beispiel
SELECT Welche Spalten angezeigt werden SELECT name, preis
FROM Aus welcher Tabelle die Daten kommen FROM produkte
WHERE Filtert Zeilen vor der Gruppierung WHERE lagerbestand > 100
GROUP BY Gruppiert gleiche Werte GROUP BY kategorie
HAVING Filtert nach der Gruppierung HAVING AVG(preis) > 50
ORDER BY Sortiert die Ausgabe ORDER BY preis DESC
LIMIT Begrenzt die Zeilenanzahl LIMIT 10

—

Beispiel 1 – Einfache Abfrage

Aufgabe: > Namen und Preise aller Produkte mit Lagerbestand > 100, nach Preis absteigend sortiert, max. 10 Einträge.

```sql SELECT name, preis FROM produkte WHERE lagerbestand > 100 ORDER BY preis DESC LIMIT 10; ```

Erklärung:

  • `WHERE` filtert nur Zeilen mit Lagerbestand ĂĽber 100.
  • `ORDER BY preis DESC` sortiert die Ausgabe absteigend.
  • `LIMIT 10` zeigt nur die ersten 10 Ergebnisse an.

—

Beispiel 2 – Gruppierte Auswertung

Aufgabe:

Pro Kategorie den Durchschnittspreis fĂĽr Produkte mit Lagerbestand > 100 berechnen.
Nur Kategorien mit einem Durchschnittspreis > 50 anzeigen, absteigend sortiert, max. 10 Ergebnisse.

```sql SELECT kategorie, AVG(preis) AS durchschnittspreis FROM produkte WHERE lagerbestand > 100 GROUP BY kategorie HAVING AVG(preis) > 50 ORDER BY durchschnittspreis DESC LIMIT 10; ```

Erklärung:

* `AVG(preis)` berechnet den Durchschnittspreis je Kategorie. * `GROUP BY kategorie` fasst Produkte derselben Kategorie zusammen. * `HAVING` filtert nur Gruppen mit Durchschnitt > 50. * Das Alias `durchschnittspreis` kann in `ORDER BY` wiederverwendet werden.

—

Unterschied: WHERE vs. HAVING

Vergleichspunkt WHERE HAVING
Zeitpunkt Vor der Gruppierung Nach der Gruppierung
Filtert Einzelne Datensätze Gruppenergebnisse
Beispiel WHERE preis > 50 HAVING AVG(preis) > 50

Merksatz:

„WHERE prüft Datensätze, HAVING prüft Gruppen.“

—

Wichtige Aggregatfunktionen

Funktion Beschreibung Beispiel
COUNT() Zählt Datensätze COUNT(*)
SUM() Summiert Werte SUM(preis)
AVG() Durchschnitt AVG(preis)
MIN() Kleinster Wert MIN(preis)
MAX() Größter Wert MAX(preis)

Hinweis: Aggregatfunktionen kannst du nur in Verbindung mit `GROUP BY` oder zur Gesamtauswertung nutzen.

—

Sortierung

```sql ORDER BY spalte [ASC|DESC] ```

Parameter Bedeutung
ASC Aufsteigend (Standard)
DESC Absteigend

Beispiel:

```sql ORDER BY preis DESC, name ASC; ```

→ Sortiert zuerst nach Preis (absteigend), dann nach Name (aufsteigend).

—

LIMIT & OFFSET

Befehl Bedeutung
———- ————————————
`LIMIT n` Zeigt nur n Zeilen an
`OFFSET n` Ăśberspringt n Zeilen vor der Ausgabe

Beispiel:

```sql SELECT * FROM produkte ORDER BY preis DESC LIMIT 10 OFFSET 20; ```

→ Zeigt die Zeilen 21–30 der Sortierung.

—

Aliasnamen

Mit `AS` kannst du Spalten- oder Tabellennamen umbenennen:

```sql SELECT name AS produktname, preis AS einzelpreis FROM produkte AS p; ```

Aliases erleichtern lesbare Ergebnisse und sind in `ORDER BY` wiederverwendbar.

—

Joins (Ăśberblick)

Join-Typ Beschreibung Beispiel
————– ————————————————- ————————————————————————————-
INNER JOIN Nur passende Datensätze beider Tabellen `SELECT * FROM kunden INNER JOIN bestellungen ON kunden.id = bestellungen.kunden_id;`
LEFT JOIN Alle Datensätze links + passende rechts `SELECT * FROM kunden LEFT JOIN bestellungen ON kunden.id = bestellungen.kunden_id;`
RIGHT JOIN Alle Datensätze rechts + passende links `SELECT * FROM kunden RIGHT JOIN bestellungen ON kunden.id = bestellungen.kunden_id;`
FULL JOIN Alle Datensätze beider Seiten (falls unterstützt) `SELECT * FROM kunden FULL JOIN bestellungen ON …;`

Merksatz:

„INNER = nur Treffer, LEFT = alles links + Treffer, RIGHT = alles rechts + Treffer.“

—

NĂĽtzliche PrĂĽfungsbefehle

```sql – Zeilen zählen SELECT COUNT(*) FROM produkte;

– Alle Kategorien ohne Wiederholung SELECT DISTINCT kategorie FROM produkte;

– Höchster Preis pro Kategorie SELECT kategorie, MAX(preis) FROM produkte GROUP BY kategorie;

– Preisaktualisierung UPDATE produkte SET preis = preis * 1.1 WHERE kategorie = 'Hardware';

– Neue Zeile einfügen INSERT INTO produkte (name, preis, lagerbestand) VALUES ('Monitor', 199, 50);

– Datensatz löschen DELETE FROM produkte WHERE name = 'Altgerät'; ```

—

Mini-Merksätze

* „SELECT zeigt, FROM liefert, WHERE filtert.“ * „GROUP BY fasst, HAVING prüft, ORDER BY sortiert.“ * „COUNT zählt, AVG mittelt, SUM addiert.“ * „Ohne WHERE = alles.“ * „Immer mit Semikolon abschließen.“

—

PrĂĽfungstipp

*SQL in Ruhe logisch lesen:*

1. FROM – welche Tabelle(n)? 2. WHERE – welche Bedingungen? 3. GROUP BY – wie gruppieren? 4. HAVING – was bleibt übrig? 5. ORDER BY – wie sortieren? 6. LIMIT – wie viele Zeilen?

—

Stand: date Quelle: Eigene Zusammenfassung nach Lernunterlagen / SQL.pdf

```

it-themen/allgemein/sql_spickzettel.1759744585.txt.gz · Zuletzt geändert: von lars