Lerne SQL durch Tun
Learn SQL by doing: write real queries against a real database, with instant feedback. Jede Lektion läuft in deinem Browser, auf einer kleinen Übungsdatenbank: für die meisten Lektionen eine Bäckerei, für die Lektionen zu Mitarbeitenden eine Firma.
Abfragen laufen auf PostgreSQL. Der Kern von SQL ist in MySQL, SQL Server und SQLite gleich; die Referenzseiten zeigen, wo sie sich unterscheiden. Siehe auch die Anleitungen und die Referenz.
0 von 34 Lektionen abgeschlossen
Grundlagen
Kostenlos: eine Tabelle lesen, sortieren und filtern.
- Dein erstes SELECTSpalten aus einer Tabelle lesen, Zeilen sortieren und Duplikate entfernen.Free
- Zeilen mit WHERE filternNur die Zeilen behalten, die eine Bedingung erfüllen, einschließlich Bereiche und fehlender Werte.Free
- Muster, Listen und Top-ErgebnisseText mit LIKE abgleichen, mit IN gegen eine Liste prüfen und mit LIMIT nur die ersten Zeilen behalten.Free
Zusammenfassungen
Anzahl, Summe und Durchschnitt, pro Gruppe.
Joins
Tabellen über ihre Schlüssel verbinden, auch die Zeilen ohne Treffer.
- Tabellen mit JOIN kombinierenZeilen aus zwei Tabellen über einen gemeinsamen Schlüssel verbinden und dann die kombinierten Zeilen gruppieren.Pro
- Zeilen ohne Treffer behalten: LEFT JOINEin INNER JOIN verwirft Zeilen ohne Treffer. Ein LEFT JOIN behält sie, so findest du, was fehlt.Pro
- Nicht passende Zeilen auf beiden Seiten behalten: RIGHT und FULL JOINEin RIGHT JOIN behält jede Zeile der rechten Tabelle. Ein FULL JOIN behält nicht passende Zeilen aus beiden Tabellen.Pro
- Zeilen innerhalb einer Tabelle vergleichenEine Tabelle mit sich selbst verbinden, um ihre Zeilen miteinander zu vergleichen, ohne Paare zu wiederholen.Pro
- Viele-zu-viele über eine ZwischentabelleBestellungen und Produkte sind über order_items verknüpft. Ein Join über diese Tabelle beantwortet Fragen auf Produktebene.Pro
- Jede Kombination: CROSS JOIN und die USING-KurzschreibweiseCROSS JOIN paart jede Zeile mit jeder Zeile einer anderen Tabelle. USING verkürzt einen Join über eine Spalte, die in beiden Tabellen den gleichen Namen hat.Pro
Weitere Abfragen
CASE, Unterabfragen, Fensterfunktionen, UNION sowie Text- und Datumsfunktionen.
- Nach Bedingungen verzweigen: CASE WHENCASE ist die SQL-Version von WENN und WENNS: Es wählt für jede Zeile einen Wert, abhängig von Bedingungen.Pro
- Abfragen in Abfragen: Unterabfragen, WITH und EXISTSEine Unterabfrage ist ein SELECT innerhalb einer anderen Abfrage. WITH gibt einer Unterabfrage einen Namen, damit du sie wiederverwenden kannst. EXISTS prüft, ob es eine passende Zeile gibt.Pro
- Rang und laufende Summen: FensterfunktionenOVER fügt eine Berechnung über mehrere Zeilen hinzu, ohne sie zusammenzufassen, ähnlich wie RANK und laufende Summen in Excel.Pro
- Nachbarzeilen betrachten: LAG, LEAD und DENSE_RANKLAG und LEAD lesen die vorherige oder nächste Zeile ohne Join. DENSE_RANK vergibt Ränge ohne Lücken. Gleichstände verändern laufende Summen.Pro
- Ergebnisse stapeln: UNION und UNION ALLUNION fügt die Zeilen zweier Abfragen zu einem Ergebnis zusammen. UNION ALL behält die Wiederholungen. Beide benötigen die gleiche Anzahl an Spalten.Pro
- Überschneidung und Differenz: INTERSECT und EXCEPTINTERSECT behält Zeilen, die in beiden Ergebnissen vorkommen. EXCEPT behält Zeilen aus dem ersten Ergebnis, die im zweiten fehlen.Pro
- Text und Datum: verbinden, zuschneiden und zählenVerbinde Text mit ||, ändere Groß- und Kleinschreibung, schneide einen Teil eines Werts aus und berechne die Tage zwischen zwei Daten.Pro
- Mehr Text- und Datumswerkzeuge: REPLACE, SPLIT_PART und generate_seriesErsetze und teile Text, addiere Tage zu einem Datum und erstelle eine Liste von Datumswerten, um Lücken zu finden.Pro
- Umwandeln und vergleichen: CAST, NULLIF, ILIKE und SeitenwechselÄndere den Typ eines Werts, vermeide eine Division durch null, vergleiche Text ohne Beachtung der Groß- und Kleinschreibung und lade Ergebnisse Seite für Seite.Pro
Daten ändern
Zeilen sicher hinzufügen, ändern und entfernen.
- Zeilen hinzufügen, ändern und entfernenINSERT, UPDATE und DELETE, und warum UPDATE und DELETE ein WHERE brauchen.Pro
- Einfügen oder aktualisieren: ON CONFLICT und RETURNINGEin Upsert fügt eine Zeile ein oder aktualisiert sie, wenn der Schlüssel schon existiert. RETURNING zeigt die geänderten Zeilen.Pro
- Eine Tabelle mit Regeln anlegen: CREATE TABLE und TransaktionenCREATE TABLE legt die Spalten und Regeln für eine neue Tabelle fest. Eine Transaktion fasst Änderungen zusammen, sodass ROLLBACK sie rückgängig machen kann.Pro
- Die Struktur ändern: ALTER TABLE, Views und IndizesSpalten und Regeln zu einer bestehenden Tabelle hinzufügen, eine Abfrage als View speichern, Suchen mit einem Index beschleunigen und nicht mehr Benötigtes entfernen.Pro
Aus Excel
Suchfunktionen, SUMIF, PivotTables und dynamische Arrays, in SQL.
- Von VLOOKUP zum JOINWenn du VLOOKUP und XLOOKUP kennst, kennst du schon die Idee hinter einem JOIN.Pro
- SUMIF, COUNTIFS und Pivot-Tabellen in SQLBedingte Summen und Zählungen werden zu WHERE plus SUM oder COUNT. Eine Pivot-Tabelle wird zu GROUP BY auf zwei Spalten.Pro
- FILTER, UNIQUE und SORT in SQLDie Funktionen für dynamische Arrays entsprechen WHERE, DISTINCT und ORDER BY.Pro
Mitarbeiter-Datenbank
Eine zweite Übungsdatenbank, ein kleines Unternehmen: Organigramme, Gehälter, Einstellungsdaten und Fensterrahmen.
- Organigramme mit rekursivem WITHFolge einer Kette von Vorgesetzten nach oben oder unten über beliebig viele Ebenen mit einem rekursiven gemeinsamen Tabellenausdruck (CTE).Pro
- Gehälter: N-höchstes, pro Abteilung und über dem DurchschnittRangfolge mit Gleichstand, die oberste Zeile jeder Gruppe und den Vergleich jedes Werts mit dem Gruppendurchschnitt.Pro
- Vorgesetzte und Paare: Self-Joins auf employeesVerknüpfe die Tabelle employees mit sich selbst, um Vorgesetzte anzuzeigen, direkte Untergebene zu zählen und Paare zu finden.Pro
- Fensterrahmen: laufende Summen und gleitende DurchschnitteROWS BETWEEN legt fest, welche Zeilen eine Fensterberechnung einbezieht: eine kumulative Summe, ein gleitender Durchschnitt und wie Gleichstände behandelt werden.Pro
Interviewtraining
Die Fragen, die immer wieder vorkommen: n-höchster Wert, Top pro Gruppe, Duplikate und Veränderung über die Zeit.
- Interviewmuster: n-höchster Wert, Top pro Gruppe, DuplikateDie Fragen, die in SQL-Interviews immer wieder vorkommen, jeweils mit mehr als einer richtigen Lösung.Pro
- Interviewmuster: erste Zeile pro Gruppe, Veränderung über die Zeit, Anteil am GanzenFragen zu Fensterfunktionen, die eine Tabelle in einen Bericht verwandeln.Pro
Fallstudie
Beantworte echte Fragen zu einem Monat Verkäufen.