Was ist SQL?
SQL (Structured Query Language) ist eine Standardsprache für die Arbeit mit Datenbanken. SQL wird häufig verwendet, um Daten vorzubereiten oder zu transformieren, bevor diese anschließend mit Tools wie Tableau oder Power BI visualisiert werden.
Datengrundlage
Die Datengrundlage für SQL besteht aus einer Datenbank, die meistens aus mehreren Tabellen besteht. Diese sind logisch in sogenannten Schemas organisiert (ähnlich wie Ordner innerhalb eines großen Speichers). Die Struktur dieser Tabellen wird oft in einem Entity-Relationship-Diagramm (ERD) visualisiert. Ein ERD zeigt, wie Tabellen miteinander verknüpft sind. Ein bekanntes Beispiel dafür sind das Star- oder das Snowflake-Schema mit Fakten- und Dimensionstabellen. Für diese Verknüpfungen sind Primär- und Fremdschlüssel wichtig. Ein Primärschlüssel identifiziert jede Zeile einer Tabelle eindeutig. Ein Fremdschlüssel verweist auf einen Primärschlüssel in einer anderen Tabelle, wodurch Beziehungen zwischen Tabellen entstehen.
Syntax-Grundlagen
Die Basis jeder SQL-Abfrage beginnt mit SELECT (was will ich sehen?) und FROM (woher kommen die Daten?).
Reihenfolge einer SQL-Abfrage:
- SELECT – Was will ich sehen?
- FROM – Woher kommen die Daten?
- WHERE – Filtert Einzelwerte (vor Aggregation)
- GROUP BY – Gruppiert Daten für Aggregationen
- HAVING – Filtert aggregierte Gruppen
- ORDER BY – Sortiert das Ergebnis
Beispiele
SELECT
Dies ist der Startpunkt jeder SQL-Abfrage. Mit diesem Befehl wählst du aus, welche Spalten du sehen möchtest. Du kannst entweder bestimmte Spalten angeben oder mit SELECT * alle anzeigen lassen.
FROM
FROM gibt an, aus welcher Tabelle die Daten stammen. Bei mehreren Tabellen werden diese meist per JOIN verbunden (z. B. INNER, LEFT, RIGHT, OUTER).
SELECT *
FROM orders o
INNER JOIN customers c
ON o.customer_id = c.customer_id;
Um die Tabellen über die Schlüssel mittels Join zu verbinden, reicht es nicht aus, nur die Variable zu nennen. Es muss auch angegeben werden, aus welcher Tabelle sie stammt. Um sich die Schreibarbeit zu erleichtern, wurde hinter den Tabellennamen der Anfangsbuchstabe geschrieben, der im weiteren Verlauf verwendet werden kann.
(Ein Semikolon markiert das Ende einer SQL-Anweisung)
WHERE
filtert Datensätze, bevor sie gruppiert oder aggregiert werden. Du kannst Bedingungen wie Wertebereiche, bestimmte Textmuster oder Listen nutzen. Zum Beispiel:
SELECT sales, customer_id
FROM orders
WHERE sales BETWEEN 50 AND 100
AND ship_mode = 'Second Class';
Oder
SELECT customer_id
FROM customers
WHERE city LIKE '%town';
Mit dieser Abfrage erhältst du alle Kunden aus Städten, die auf „Town“ enden.
- % ist ein Platzhalter für beliebig viele Zeichen.
- _ steht für genau ein Zeichen.
GROUP BY
wird verwendet, um Daten zu gruppieren und beispielsweise Summen oder Durchschnittswerte pro Kategorie zu ermitteln. Eine typische Abfrage sieht wie folgt aus:
SELECT SUM(sales) AS "Total Sales per Category"
FROM orders
GROUP BY category;
Mit "AS" wird ein Alias für die Summe der Sales vergeben ("Total Sales per Category").
HAVING
filtert das Ergebnis nach der Aggregation. Möchtest du beispielsweise nur Kunden mit einem Gesamtumsatz von über 10.000 sehen, lautet die Abfrage:
SELECT customer_name, SUM(sales)
FROM customers c
INNER JOIN orders o
ON c.customer_id = o.customer_id
GROUP BY customer_name
HAVING SUM(sales) > 10000;
Hier wird nach dem Kundennamen gruppiert. Hat ein Kunde mehrere Einträge, werden diese zusammengefasst und die Summe der Verkäufe berechnet.
ORDER BY
sortiert die Ergebnisse einer Spalte, entweder aufsteigend (asc) oder absteigend (desc).
SELECT customer_name, SUM(sales) AS "total sales"
FROM customers c
GROUP BY customer_name
HAVING SUM(sales) > 10000
ORDER BY "total sales" DESC;
Teste dein Wissen
Möchtest du dein neu erworbenes Wissen testen? Hier geht es zu einem Mordfall-SQL-Rätsel. Alle erlernten Abfragen reichen aus, um das Rätsel zu lösen.
