Interaktiver Kurs
SQL-Kurs
Lerne SQL von Grund auf, mit einem echten Postgres, das in deinem Browser läuft.
01 · Modul 1 — Basis-SELECT
Die Grundlagen: Daten aus einer Tabelle lesen und filtern.
- 1.1Einführung in SQLWas SQL ist, warum es verwendet wird und wie eine Datenbank aussieht.~5 Min
- 1.2SELECT … FROMDie einfachste Abfrage: Zeilen aus einer Tabelle lesen.~10 Min
- 1.3Filtern mit WHEREAuswahl nur der Zeilen, die eine Bedingung erfüllen.~10 Min
- 1.4Sortieren mit ORDER BYErgebnisse sortieren, aufsteigend oder absteigend.~8 Min
02 · Modul 2 — Leistungsfähigeres SELECT
Begrenzen, Duplikate entfernen, umbenennen und zählen: die Werkzeuge, die du täglich benutzt.
- 2.1Begrenzen mit LIMITNur die ersten N Zeilen zurückgeben, um z. B. Ranglisten zu erstellen.~6 Min
- 2.2Einzigartige Werte mit DISTINCTDuplikate aus dem Ergebnis eines SELECT entfernen.~6 Min
- 2.3Umbenennen mit ASSpalten und Ausdrücken im Ergebnis lesbarere Namen geben.~6 Min
- 2.4Zählen und Zusammenfassen: COUNT, AVG, MAXAggregatfunktionen: Eine einzelne Zahl aus vielen Zeilen erhalten.~8 Min
03 · Modul 3 — JOIN und GROUP BY
Kombination mehrerer Tabellen und Erstellung von Berichten nach Gruppen: das Herzstück jeder echten Abfrage.
- 3.1Verbinden zweier Tabellen: INNER JOINKombination von Zeilen aus verschiedenen Tabellen entsprechend ihrer Beziehungen.~12 Min
- 3.2Alles auf der linken Seite behalten: LEFT JOINZeilen einbeziehen, die keine Übereinstimmung in der anderen Tabelle haben.~10 Min
- 3.3Gruppieren mit GROUP BYBerechnung eines Aggregats pro Gruppe, zum Beispiel pro Abteilung.~10 Min
- 3.4Filtern von Gruppen: HAVINGNur die Gruppen behalten, die eine Bedingung für das Aggregat erfüllen.~8 Min
04 · Modul 4 — Praktisches SQL
Die Werkzeuge, die in der Praxis den Unterschied machen: Listen, Bereiche, NULLs und bedingte Logik.
- 4.1Listen und Bereiche: IN und BETWEENKompakte Filter für „eines von diesen“ und „zwischen A und B“.~8 Min
- 4.2Umgang mit NULLs: IS NULL und COALESCEFehlende Werte ohne Überraschungen erkennen und behandeln.~10 Min
- 4.3Bedingte Logik: CASE WHENWerte direkt im SELECT in Kategorien transformieren.~10 Min
- 4.4Eine Abfrage in einer anderen: SubabfragenDas Ergebnis eines SELECT in einem anderen SELECT verwenden.~12 Min
05 · Modul 5 — Fortgeschrittene JOINs
Multi-Tabellen-JOINs, Self-JOINs, OUTER-, CROSS- und Mengenoperationen: Daten kombinieren wie ein Profi.
- 5.1JOINs über drei oder mehr TabellenDurchlaufen einer Beziehungskette: Bestellungen → Kunden → Produkte in einer einzigen Abfrage.~12 Min
- 5.2Self-JOIN: Eine Tabelle mit sich selbstHierarchien und interne Beziehungen: Lesen einer Tabelle mit zwei Rollen (Kind und Elternteil).~10 Min
- 5.3OUTER JOIN: Die „Lücken“ findenLEFT/RIGHT/FULL OUTER JOIN verwenden, um Zeilen ohne Übereinstimmung zu finden.~10 Min
- 5.4UNION, INTERSECT, EXCEPT (und CROSS JOIN)Kombination von Ergebnissen als Mengen: Vereinigung, Schnittmenge, Differenz und kartesisches Produkt.~12 Min
06 · Modul 6 — Integrierte Funktionen
Transformieren und Manipulieren von Daten mit nativen PostgreSQL-Funktionen: Strings, Datumsangaben, Zahlen, Typkonvertierungen.
- 6.1String-FunktionenLOWER, UPPER, LENGTH, Verkettung, SUBSTRING, TRIM, REPLACE, LIKE und ILIKE.~12 Min
- 6.2Datums- und Timestamp-FunktionenEXTRACT, DATE_TRUNC, Intervalle und Datumsdifferenzen.~12 Min
- 6.3Numerische FunktionenROUND, CEIL, FLOOR, ABS, MOD und Integer- vs. Dezimaldivision.~10 Min
- 6.4CAST und TypkonvertierungenKonvertieren zwischen Typen mit `::type` und `CAST(... AS ...)`.~10 Min
07 · Modul 7 — Fortgeschrittene Analytik
Mehrstufige Abfragen (CTE), Rankings und laufende Summen (Window-Funktionen), unbegrenzte Hierarchien (WITH RECURSIVE).
- 7.1CTE: Mehrstufige Abfragen mit WITHEine komplexe Abfrage in benannte Schritte aufteilen, um Lesbarkeit und Wiederverwendbarkeit zu verbessern.~12 Min
- 7.2Window-Funktionen: Rankings und Berechnungen pro GruppeROW_NUMBER, RANK, DENSE_RANK mit OVER(PARTITION BY …) für Rankings innerhalb von Gruppen.~14 Min
- 7.3LAG, LEAD und laufende SummenJede Zeile mit der vorherigen/nächsten vergleichen und kumulative Summen berechnen.~12 Min
- 7.4Rekursive CTEs: Hierarchien mit beliebiger TiefeWITH RECURSIVE zum Durchlaufen von Hierarchien wie Kategorien.~14 Min
08 · Modul 8 — Schreiben und Modifizieren von Daten
INSERT, UPDATE, DELETE, CREATE TABLE mit Constraints, Transaktionen: Schließen des Kreises mit Schreibvorgängen.
- 8.1Daten einfügen: INSERTINSERT für einzelne und mehrere Zeilen, RETURNING-Klausel, explizite Spaltenauswahl.~10 Min
- 8.2Aktualisieren und Löschen: UPDATE und DELETESelektive Änderungen mit WHERE, und warum ein vergessenes WHERE eine Katastrophe ist.~10 Min
- 8.3Erstellen von Tabellen und Constraints: DDLCREATE TABLE mit PRIMARY KEY, NOT NULL, UNIQUE, FOREIGN KEY, CHECK und DEFAULT.~12 Min
- 8.4Transaktionen: Alles oder nichtsBEGIN, COMMIT, ROLLBACK: Eine Gruppe von Operationen atomar machen.~10 Min
09 · Modul 9 — Datenstrukturen und DDL
Erstellen und Ändern von Tabellen, fortgeschrittene Constraints, komplexe Typen und Views.
- 9.1Fortgeschrittene Datentypen und ENUMsNumerische Typen, TEXT vs. VARCHAR, BOOLEAN, UUID und benutzerdefinierte ENUM-Typen.~10 Min
- 9.2Mehrere und tabellenübergreifende ConstraintsZusammengesetzte UNIQUE- und PRIMARY KEY-Constraints, fortgeschrittene CHECK- und Fremdschlüssel-Constraints (ON DELETE CASCADE).~12 Min
- 9.3Struktur ändern: ALTER TABLEHinzufügen, Ändern und Entfernen von Spalten oder Constraints bei bestehenden Tabellen.~10 Min
- 9.4Views und DatenabstraktionErstellen von VIEWs zur Vereinfachung komplexer Abfragen und MATERIALIZED VIEWs zur Leistungssteigerung.~12 Min
10 · Optimierung und Indizes
Die Kunst, Abfragen schnell zu machen: Indizes, Ausführungspläne und Datenbankoptimierung.
- 10.1Indizes und B-TreesErstellen von Indizes, um Suchabfragen auf großen Tabellen drastisch zu beschleunigen.~15 Min
- 10.2EXPLAIN und ANALYZELerne, die Ausführungspläne der Datenbank zu lesen, um Engpässe zu diagnostizieren.~15 Min
- 10.3Zusammengesetzte und partielle IndizesIndizes auf mehreren Spalten gleichzeitig oder nur auf einem bestimmten Teil der Daten verwenden.~12 Min
- 10.4Das N+1-ProblemDas berüchtigte ORM-Performance-Problem und die nativen SQL-Methoden, um es in einer einzigen Abfrage zu lösen.~12 Min
11 · Transaktionen und Nebenläufigkeit
Sichere Verwaltung gleichzeitiger Datenänderungen: ACID-Transaktionen, Locks und Isolationsstufen.
- 11.1ACID-Transaktionen (BEGIN/COMMIT)Daten konsistent halten mit BEGIN, COMMIT und ROLLBACK, indem Abfragen in einem einzigen, für andere unsichtbaren Block gruppiert werden.~15 Min
- 11.2Race ConditionsGrenzfallszenarien: Was passiert, wenn zwei parallele Datenbank-Mitarbeiter auf denselben Warenkorb zugreifen.~10 Min
- 11.3Locking und SELECT FOR UPDATEAktives Sperren von Zeilen beim Lesen, wodurch andere schreibende Threads gezwungen werden, zu warten.~15 Min
- 11.4IsolationsstufenGehe an die Grenzen durch Implementierung von Serializable oder weiche auf Read Committed für unsichere, aber schnelle Performance aus.~12 Min
12 · Funktionen und Trigger
Automatisierung der Geschäftslogik in der Datenbank: Schreiben wiederverwendbarer Funktionen und Reagieren auf Ereignisse mit Triggern.
- 12.1UDFs und Basis-SQLErstelle deine eigenen User Defined Functions, um komplexe Berechnungen zu kapseln und sie wie Makros in jeder Abfrage wiederzuverwenden.~15 Min
- 12.2Fortgeschrittene Logik mit PL/pgSQLGib deinen Funktionen Superkräfte: Variablen, if-else-Verzweigungen und Schleifen im reinen prozeduralen Stil in der Datenbank.~15 Min
- 12.3Einführung in TriggerDefiniere spezielle Funktionen, die sofort den ausgehenden (OLD) oder eingehenden (NEW) Datensatz überprüfen können.~15 Min
- 12.4Praktische Trigger und AuditAutomatisiere die Sicherheit: Automatische Aktualisierung des „updated_at“-Datums und Archivierung gelöschter Zeilen.~12 Min
13 · Window-Funktionen
Fortgeschrittene Datenanalyse ohne Zusammenklappen von Zeilen: Entdecke OVER(), PARTITION BY und analytische Funktionen.
- 13.1Einführung und die OVER-KlauselAggregatberechnungen (wie SUM oder AVG) ausführen und dabei die ursprünglichen Einzelzeilen beibehalten.~15 Min
- 13.2Gruppieren mit PARTITION BYErstelle logische Gruppierungen (Fenster) in den Daten, auf die Funktionen angewendet werden sollen, ohne GROUP BY zu verwenden.~15 Min
- 13.3Rankings: ROW_NUMBER, RANK und DENSE_RANKZuweisen von sequenziellen Zeilennummern und Rängen zu Ergebnissen, korrekter Umgang mit Gleichständen.~15 Min
- 13.4Verschiebungen: LAG und LEADZugriff auf Werte aus der vorherigen oder nächsten Zeile direkt aus der aktuellen Zeile, um Differenzen zu berechnen.~12 Min
14 · CTEs und hierarchische Abfragen (WITH)
Vereinfache riesige Abfragen mit Common Table Expressions und navigiere in unbegrenzten Datenbäumen mit rekursiven CTEs.
- 14.1Einführung in CTEs (WITH)Ersetze unlesbare geschachtelte Subabfragen durch ein sauberes prozedurales Format, indem du temporäre „virtuelle Tabellen“ deklarierst.~12 Min
- 14.2Mehrere und verkettete CTEsBändige die Komplexität, indem du die Verarbeitung in mehrere aufeinanderfolgende Schritte innerhalb einer einzigen WITH-Anweisung aufteilst.~15 Min
- 14.3Rekursive CTEs: BaumstrukturenNavigiere ohne Grenzen in Manager-Hierarchien und Parent-Child-Kategorien, indem du die CTE von sich selbst aufrufst.~18 Min
15 · PostgreSQL JSON und NoSQL
Nutze relationale Leistung gemischt mit flexibler Dokumentenunterstützung über JSON und JSONB, ohne externe Datenbanken zu verwenden.