Mittlerweile kennst du die Vorteile von SQL und arbeitest routiniert als Data Analyst, Data Engineer oder Data Scientist. Du weißt über die verschiedenen SQL-Dialekte Bescheid, kannst SQL-Daten importieren und beherrschst grundlegende SQL-Abfragen. Willst du deine Kompetenzen aufs nächste Level bringen? So gehst du vor.
Fortgeschrittene SQL-Konzepte
Kenne die SQL-Teillsprachen
In SQL gibt es fünf zentrale Teillsprachen—sie stehen für unterschiedliche Aufgaben, gehören aber alle zur SQL-Sprache:
1. DDL (Data Definition Language)
Damit erstellst du Tabellen und Datenbanken und definierst Feld- oder Tabelleneigenschaften. Beispiele: CREATE, ALTER und DROP.
2. DML (Data Manipulation Language)
Diese Befehle ändern Daten oder fügen Daten zu Tabellen hinzu bzw. entfernen sie. Beispiele: UPDATE, DELETE und INSERT.
3. DCL (Data Control Language)
Damit steuerst du, wer auf Daten zugreifen darf. Typische Befehle: GRANT und REVOKE.
4. TCL (Transaction Control Language)
Diese Sprache dient dem Bestätigen und Zurücksetzen von Transaktionen. COMMIT und ROLLBACK gehören hierzu.
5. DQL (Data Query Language)
Damit rufst du Daten aus dem SQL-Server ab. Der Befehl SELECT fällt in diese Kategorie.
Das wirkt vielleicht einschüchternd, aber keine Sorge! SQL ist eine elegante, geradlinige Sprache—zumal du mit SQL keine Visualisierungen erstellst. Es geht darum, Tabellen anzulegen, Daten zu strukturieren und zu bereinigen und die richtigen Fragen zu stellen.
UNIONs und JOINs
Oft liegen die benötigten Daten nicht in einer einzigen großen Tabelle, sondern verteilt über mehrere Tabellen. Mit SQL kannst du diese Tabellen zusammenführen, um alle Daten an einem Ort zu bündeln. Da UNION und JOIN mit Tabellen arbeiten, stehen sie im FROM-Teil.
Ein UNION stapelt zwei Tabellen mit identischen Spalten einfach übereinander. Das ist praktisch bei Verkaufstransaktionen, die in Monats-, Quartals- oder Jahrestabellen aufgeteilt sind.
Häufig verwendet werden verschiedene JOINs—Inner, Outer, Left und Exception. Vereinfacht gesagt liefern sie unterschiedliche Kombinationen von Zeilen aus den verknüpften Tabellen.
Weiterführende Ressourcen:
Fortgeschrittene SQL-Syntax
Die Grundlagen der SQL-Syntax beherrschst du bereits: SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY und LIMIT. Du bist fit im Database Design und verstehst die Reihenfolge der SQL-Ausführung—also dass Abfragen anders geschrieben als verarbeitet werden.
Jetzt ist es Zeit für fortgeschrittene Syntax.
Aggregationen: SELECT, GROUP BY und HAVING
Ähnlich wie in Excel kannst du Daten in SQL summieren, mitteln, Maximum/Minimum berechnen oder zählen. Aggregationen helfen bei der ersten Exploration, in der Analyse oder bei der Präsentation. Du kannst sie direkt im SELECT verwenden, um eine einfache Aggregation zurückzugeben, oder mit GROUP BY eine Art Excel-„Pivot-Tabelle“ aus deinen Daten bilden.
Aggregationen im SELECT liefern eine einfache Kennzahl. Wenn du zum Beispiel SUM(column_name) nutzt, gibt die Abfrage einen Wert zurück, der die Summe aller Werte in dieser Spalte darstellt.
Du kannst auch nach Kategorien aggregieren. Hast du etwa eine Tabelle mit Obstverkaufsdaten aus dem ganzen Land, könntest du die Summe aller Verkäufe nach Produkttyp gruppieren oder den Durchschnittspreis nach Bundesstaat. Dafür brauchst du GROUP BY, das nach WHERE kommt. Lege die kategoriale Spalte fest, nach der du gruppieren willst, und nimm diese Spalte zusätzlich in dein SELECT auf.
Sind die Daten sauber gruppiert und die Aggregation einer kategorialen Variable zugeordnet, kannst du mit HAVING (steht nach GROUP BY) auf diese Aggregationen filtern. Das ist nützlich, wenn du deine Abfrage weiter eingrenzen willst—zum Beispiel nur Obstläden mit einem durchschnittlichen Umsatz über 100.000 $ auswählen.
Weiterführende Ressourcen:
- SQL | String Functions | GeeksforGeeks
- SQL Aggregate Functions | Mode
- SQL GROUP BY | W3 Schools
- SQL HAVING | TutorialsPoint
CASE-Statements
Ein SQL-CASE-Statement funktioniert ähnlich wie die Excel-Funktion IF(): Wenn der Inhalt einer Spalte ein bestimmtes Kriterium erfüllt, dann gib „dies“ zurück. Das ist hilfreich, um quantitative Werte in Kategorien zu überführen, etwa in „High“, „Medium“ oder „Low“. CASE-Statements stehen im SELECT-Teil.
Siehe auch:
Subqueries
Subqueries kannst du auf verschiedene Arten einsetzen, meist im FROM- oder im WHERE-Teil. Sie erzeugen aus deinen Daten eine kleine, temporäre Tabelle, die du anschließend wie eine neue Tabelle weiter abfragen kannst.
Siehe auch:
Datums- und Zeitfunktionen
Wie in vielen Daten-Sprachen sind Datums- und Zeitangaben knifflig. Manchmal verhalten sie sich wie „Strings“, also reine Informationen. Manchmal können sie als echte Datumswerte behandelt und per SQL-Syntax in Monate, Jahre usw. zerlegt werden. Wegen der vielen Herangehensweisen gelten diese Funktionen als fortgeschrittene SQL-Syntax.
Siehe auch:
Denkweise für fortgeschrittenes SQL
SQL-Grundregeln für die Praxis
Im Alltag lassen sich Geschäftsfragen selten direkt in SQL-Abfragen übersetzen. Deshalb solltest du vor der ersten Codezeile genau klären, was gebraucht wird. Hier sind bewährte Leitlinien für die SQL-Praxis.
Formuliere die Geschäftsfrage zuerst als Kommentar
Nutze Kommentare, um deine Abfrage vorzudenken: Welche Frage willst du beantworten? Auf welche Teile und Elemente musst du achten? Das gibt deiner SQL-Abfrage die Richtung.
Es gibt zwei Arten von Kommentaren: inline und mehrzeilig.
--Inline sind zwei Bindestriche und stehen in einer Codezeile—gut für kurze Notizen
/*Mehrzeilige Kommentare sehen so aus.
Sie eignen sich für Banner, die Zweck, Autor:in usw. einer Abfrage erklären*/
Skizziere deine Abfrage
Bevor du tippst, kläre die Bausteine deiner Abfrage. SELECT und FROM brauchst du immer—aber was noch? Musst du mit WHERE filtern? Brauchst du Aggregatfunktionen?
Verstehe verschiedene Wege zum Ziel
Wo möglich, entwickle mehrere Herangehensweisen. So kannst du dich selbst gegenprüfen und Ergebnisse validieren. Beispiel: Den höchsten Spaltenwert findest du entweder per MAX() im SELECT oder indem du mit ORDER BY sortierst und mit LIMIT auf eine Zeile begrenzt.
Teste deine Abfrage
Baue die Abfrage Zeile für Zeile auf und führe sie häufig aus. So stellst du sicher, dass alles funktioniert, und ersparst dir mühsames Debugging quer durch den gesamten Code.
Verschaffe dir ein Profil deiner Tabelle
Bevor du abfragst, musst du die enthaltenen Datenelemente verstehen. Starte mit der gesamten Datenbank und dann mit einigen Spalten. Ermittle Wertebereiche, kategorial wie quantitativ, um ein Gefühl für die Inhalte der Tabelle zu bekommen.
Halte Annahmen fest
Beim Schreiben von Daten-Code solltest du Annahmen dokumentieren, um Einschränkungen und Abhängigkeiten im Blick zu behalten.
Pflege ein Data Dictionary
Lege ein zentrales Nachschlagewerk für die verwendeten Datenelemente an, mit Beschreibungen der Tabellen und Felder in der Analyse. Dazu gehören auch die Datentypen je Spalte (Zeichen, Integer, Geld, Datum usw.) und kurze Spaltenbeschreibungen.
Plane Zeit für Datenqualitätsprüfungen ein
Mit dem Schreiben der Abfrage ist die Analyse nicht beendet. Du musst die Ergebnisse verstehen und Qualitätssicherungen durchführen. Probiere alternative Wege zum gleichen Ergebnis und prüfe, ob etwas anderes herauskommt—hier helfen Inline-Kommentare erneut!
Übe in einer Sandbox
Eine der besten Methoden, jede Programmiersprache zu lernen, ist eine „Sandbox“, in der du spielen kannst. Dort testest du deinen Code, schaust, ob er läuft, passt ihn an, führst ihn erneut aus—so oft, bis sich Syntax und Prinzipien sicher anfühlen. Für den Einstieg ist etwas mehr Führung hilfreich—suche dir Projekte mit klaren Anweisungen und Lösungscode zum Abgleichen.
Gute Übungsressourcen:
Das war’s fürs Erste. Hoffentlich war es hilfreich—bleib dran und übe weiter!
