5. Daten abfragen

In diesem Kapitel lernst du, wie du Daten aus mehreren Tabellen kombinierst und komplexe Abfragen erstellst. Wir werden uns mit JOINs, UNION und Unterabfragen (Subqueries) beschäftigen.

5.1 JOINs

JOINs werden verwendet, um Daten aus mehreren Tabellen basierend auf einer Beziehung zwischen ihnen zu kombinieren. Die häufigsten JOIN-Typen sind:

INNER JOIN

Der INNER JOIN gibt nur die Datensätze zurück, bei denen die JOIN-Bedingung in beiden Tabellen erfüllt ist.

Syntax:

SELECT spalten
FROM tabelle1
INNER JOIN tabelle2
ON tabelle1.spalte = tabelle2.spalte;

Beispiel:

Angenommen, wir haben zwei Tabellen: benutzer und bestellungen. Um den Namen jedes Benutzers und das Datum seiner Bestellungen abzurufen, schreibst du:

SELECT benutzer.name, bestellungen.datum
FROM benutzer
INNER JOIN bestellungen
ON benutzer.id = bestellungen.benutzer_id;

LEFT JOIN

Der LEFT JOIN gibt alle Datensätze aus der linken Tabelle (tabelle1) und die passenden Datensätze aus der rechten Tabelle (tabelle2) zurück. Wenn keine Übereinstimmung gefunden wird, enthält das Ergebnis NULL-Werte für die rechte Tabelle.

Beispiel:

SELECT benutzer.name, bestellungen.datum
FROM benutzer
LEFT JOIN bestellungen
ON benutzer.id = bestellungen.benutzer_id;

RIGHT JOIN

Der RIGHT JOIN gibt alle Datensätze aus der rechten Tabelle (tabelle2) und die passenden Datensätze aus der linken Tabelle (tabelle1) zurück. Wenn keine Übereinstimmung gefunden wird, enthält das Ergebnis NULL-Werte für die linke Tabelle.

Beispiel:

SELECT benutzer.name, bestellungen.datum
FROM benutzer
RIGHT JOIN bestellungen
ON benutzer.id = bestellungen.benutzer_id;

FULL JOIN

Der FULL JOIN gibt alle Datensätze zurück, wenn es eine Übereinstimmung in einer der Tabellen gibt. Wenn keine Übereinstimmung gefunden wird, enthält das Ergebnis NULL-Werte für die fehlenden Seiten.

Beispiel:

SELECT benutzer.name, bestellungen.datum
FROM benutzer
FULL JOIN bestellungen
ON benutzer.id = bestellungen.benutzer_id;

5.2 UNION

Die UNION-Klausel wird verwendet, um die Ergebnisse von zwei oder mehr SELECT-Anweisungen zu kombinieren. Die Anzahl und die Reihenfolge der Spalten müssen in allen SELECT-Anweisungen gleich sein.

Syntax:

SELECT spalte1, spalte2 FROM tabelle1
UNION
SELECT spalte1, spalte2 FROM tabelle2;

Beispiel:

Um die Namen aller Benutzer und Mitarbeiter in einer Liste zu kombinieren, schreibst du:

SELECT name FROM benutzer
UNION
SELECT name FROM mitarbeiter;

Hinweis:

  • UNION entfernt doppelte Zeilen. Wenn du doppelte Zeilen behalten möchtest, verwende UNION ALL.

5.3 Unterabfragen (Subqueries)

Eine Unterabfrage ist eine Abfrage, die in einer anderen Abfrage verschachtelt ist. Sie kann in SELECT, INSERT, UPDATE, DELETE oder sogar in einer anderen Unterabfrage verwendet werden.

Beispiel:

Um alle Benutzer abzurufen, die eine Bestellung aufgegeben haben, schreibst du:

SELECT name FROM benutzer
WHERE id IN (SELECT benutzer_id FROM bestellungen);

5.4 Zusammenfassung

In diesem Kapitel hast du gelernt:

  • Wie du Daten aus mehreren Tabellen mit JOINs kombinierst.

  • Wie du Ergebnisse von Abfragen mit UNION kombinierst.

  • Wie du Unterabfragen verwendest, um komplexe Abfragen zu erstellen.

Im nächsten Kapitel werden wir uns mit Aggregationen beschäftigen und lernen, wie du Daten zusammenfassend analysierst.

Quiz zu Daten abfragen

Teste dein Wissen mit diesen Fragen:

  1. Welcher JOIN-Typ gibt nur die Datensätze zurück, bei denen die JOIN-Bedingung in beiden Tabellen erfüllt ist?

    • a) LEFT JOIN

    • b) INNER JOIN

    • c) FULL JOIN

  2. Wie kombinierst du die Ergebnisse von zwei SELECT-Anweisungen, ohne doppelte Zeilen zu entfernen?

    • a) UNION

    • b) UNION ALL

    • c) JOIN

  3. Was ist eine Unterabfrage?

    • a) Eine Abfrage, die in einer anderen Abfrage verschachtelt ist.

    • b) Eine Abfrage, die nur eine Spalte zurückgibt.

    • c) Eine Abfrage, die nur eine Zeile zurückgibt.