SQL für Anfänger: Joins, Funktionen, CTEs und Subqueries verstehen

Erfahre, wie SQL Joins Tabellen verknüpfen, Funktionen Daten analysieren und CTEs Abfragen strukturieren. Praktische Beispiele für effiziente Datenbankabfragen.

DEV Community4 min0 Kommentare

SQL ist eine der wichtigsten Sprachen für Datenanalyse und Datenbankmanagement. Doch wie kombiniert man Tabellen, wertet Daten aus und vereinfacht komplexe Abfragen? Dieser Leitfaden erklärt die Kernkonzepte – von Joins über Funktionen bis hin zu Subqueries und CTEs – mit praxisnahen Beispielen, die auch Einsteiger leicht nachvollziehen können.

Warum Joins in SQL unverzichtbar sind

Joins ermöglichen es, Daten aus mehreren Tabellen in einer einzigen Abfrage zu kombinieren. Ohne diese Funktion wären relationale Datenbanken deutlich weniger leistungsfähig, da sie keine effizienten Verknüpfungen zwischen Tabellen herstellen könnten. Der Schlüssel liegt in den Beziehungen zwischen Tabellen, die über Primär- und Fremdschlüssel definiert sind.

Ein klassisches Beispiel ist die Verbindung zwischen einer Tabelle mit Studentendaten und einer Tabelle mit Kursinformationen. Mit einem Join lassen sich Fragen wie „Welcher Student belegt welchen Kurs?“ einfach beantworten. Die vier wichtigsten Join-Typen unterscheiden sich darin, welche Datensätze sie zurückgeben:

  • LEFT JOIN (LEFT OUTER JOIN): Gibt alle Datensätze aus der linken Tabelle zurück, unabhängig davon, ob eine Übereinstimmung in der rechten Tabelle existiert.
SELECT s.name, c.course_name
FROM students s
LEFT JOIN courses c ON s.course_id = c.id;
  • INNER JOIN: Liefert nur die Datensätze zurück, die in beiden Tabellen übereinstimmen.
SELECT s.name, c.course_name
FROM students s
INNER JOIN courses c ON s.course_id = c.id;
  • RIGHT JOIN (RIGHT OUTER JOIN): Gibt alle Datensätze aus der rechten Tabelle zurück, selbst wenn keine Übereinstimmung in der linken Tabelle vorliegt.
SELECT s.name, c.course_name
FROM students s
RIGHT JOIN courses c ON s.course_id = c.id;
  • FULL JOIN (FULL OUTER JOIN): Kombiniert alle Datensätze aus beiden Tabellen, unabhängig von einer Übereinstimmung.
SELECT s.name, c.course_name
FROM students s
FULL JOIN courses c ON s.course_id = c.id;

Fensterfunktionen: Daten analysieren ohne Zusammenfassung

Während Standardfunktionen wie COUNT oder SUM die Daten zusammenfassen, behalten Fensterfunktionen die ursprüngliche Zeilenstruktur bei. Sie berechnen Werte über eine Gruppe von Zeilen hinweg und fügen diese als zusätzliche Spalte hinzu. Ein typisches Anwendungsbeispiel ist die Berechnung durchschnittlicher Gehälter pro Abteilung:

SELECT 
    name, 
    department, 
    salary, 
    AVG(salary) OVER (PARTITION BY department) AS avg_salary
FROM employees;

Diese Abfrage listet jeden Mitarbeiter auf und zeigt zusätzlich das durchschnittliche Gehalt seiner Abteilung an – ohne die ursprünglichen Daten zu reduzieren.

Die wichtigsten SQL-Funktionen für den Einstieg

Grundlegende SQL-Funktionen sind das Werkzeugkasten für jede Datenanalyse. Hier die wichtigsten Funktionen im Überblick:

  • COUNT(): Zählt die Anzahl der Zeilen in einer Tabelle oder Gruppe.
  SELECT COUNT(*) FROM students;
  • SUM(): Addiert numerische Werte, etwa Gesamtumsätze.
  SELECT SUM(amount) FROM sales;
  • AVG(): Berechnet den Durchschnittswert, etwa bei Notendurchschnitten.
  SELECT AVG(marks) FROM exams;
  • UPPER()/LOWER(): Wandelt Text in Groß- oder Kleinschreibung um.
  SELECT UPPER(name), LOWER(city) FROM customers;
  • NOW()/CURRENT_DATE(): Gibt das aktuelle Datum oder die aktuelle Zeit zurück – nützlich für Filter wie „alle Bestellungen der letzten Woche“.
  SELECT CURRENT_DATE;

Subqueries: Abfragen in Abfragen meistern

Subqueries sind Abfragen, die innerhalb einer anderen SQL-Anweisung eingebettet sind. Sie führen zunächst eine Berechnung durch, deren Ergebnis dann von der äußeren Abfrage weiterverarbeitet wird. Es gibt verschiedene Arten von Subqueries:

  • Skalare Subqueries: Liefern einen einzelnen Wert zurück, etwa den Durchschnittspreis aller Produkte.
  SELECT name FROM products WHERE price > (SELECT AVG(price) FROM products);
  • Mehrzeilige Subqueries: Geben mehrere Werte zurück, etwa alle Abteilungs-IDs.
  SELECT name FROM employees WHERE department_id IN (SELECT id FROM departments);
  • Korrelierte Subqueries: Referenzieren Spalten aus der äußeren Abfrage und führen für jede Zeile eine separate Berechnung durch.
  SELECT e1.name, e1.salary
  FROM employees e1
  WHERE salary > (
      SELECT AVG(e2.salary)
      FROM employees e2
      WHERE e1.department = e2.department
  );

CTEs: Komplexe Abfragen strukturiert lösen

Common Table Expressions (CTEs) sind temporäre benannte Ergebnisdatensätze, die mit dem WITH-Befehl erstellt werden. Sie verbessern die Lesbarkeit und Wartbarkeit von SQL-Abfragen erheblich. Ein klassisches Beispiel ist die monatliche Umsatzanalyse:

WITH monthly_sales AS (
    SELECT 
        DATE_TRUNC('month', sale_date) AS month,
        SUM(amount) AS revenue
    FROM sales
    GROUP BY month
),
ranked_sales AS (
    SELECT 
        *,
        RANK() OVER (ORDER BY revenue DESC) AS sales_rank
    FROM monthly_sales
)
SELECT * FROM ranked_sales;

Diese Abfrage berechnet zunächst den monatlichen Umsatz, rankt die Monate nach Erlös und gibt das finale Ergebnis zurück. CTEs eignen sich besonders für:

  • Die Aufteilung komplexer Abfragen in logische Einheiten
  • Die Wiederverwendung von Zwischenergebnissen
  • Die Verbesserung der Code-Organisation

Fazit: SQL-Kenntnisse systematisch aufbauen

Die Beherrschung von Joins, Funktionen, Subqueries und CTEs bildet das Fundament für fortgeschrittene SQL-Anwendungen – sei es in der Datenanalyse, im Datenbankmanagement oder in technischen Interviews. Beginne mit den Grundlagen und arbeite dich schrittweise zu komplexeren Abfragen vor. Praktische Übungen sind dabei unerlässlich, um ein tiefes Verständnis zu entwickeln. Mit diesen Konzepten bist du bestens gerüstet, um Daten effizient zu verarbeiten und fundierte Analysen durchzuführen.

KI-Zusammenfassung

SQL sorgularınızı daha etkili ve verimli hale getirmek, analiz ve karar alma süreçlerinizi hızlandırmanıza yardımcı olabilir. İşte SQL join'leri, pencere fonksiyonları ve daha fazlası hakkında bilgi edinin.

Kommentare

00
KOMMENTAR SCHREIBEN
ID #IWNGT6

0 / 1200 ZEICHEN

Menschen-Check

6 + 3 = ?

Erscheint nach redaktioneller Prüfung

Moderation · Spam-Schutz aktiv

Noch keine Kommentare. Sei der erste.