0Pricing
SQL Interview Prep · Lektion

Die logische Reihenfolge der Abfrageausführung

Warum FROM vor SELECT ausgeführt wird und wie die tatsächliche Ausführungsreihenfolge ein Dutzend Fangfragen beantwortet

Die logische Reihenfolge der Abfrageausführung ist eine kostenlose SQL Interview Prep-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Interview Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Interview Prep-Kurs umfasst insgesamt 4 Lektionen.

Die Frage, die ein Dutzend weitere eröffnet

Interviewer fragen: „In welcher Reihenfolge wird eine Abfrage tatsächlich ausgeführt?“ Die Antwort erklärt vieles: warum ein SELECT-Alias in WHERE nicht funktioniert, warum WHERE keine Aggregatwerte filtern kann und mehr.

Schreibreihenfolge vs. logische Reihenfolge

Sie schreiben eine Abfrage mit SELECT am Anfang, aber die Engine führt sie mit FROM am Anfang aus. Dieser Unterschied – SELECT wird fast zuletzt ausgewertet – verursacht die meiste Verwirrung.

Die vollständige logische Reihenfolge

Die vollständige logische Reihenfolge lautet: FROM, dann WHERE, GROUP BY, HAVING, SELECT, DISTINCT, ORDER BY und schließlich LIMIT. Jede der folgenden typischen Stolperstellen ergibt sich direkt aus dieser Liste.

Warum FROM zuerst ausgeführt wird

FROM wird zuerst ausgeführt, weil die Engine zunächst Zeilen benötigt, mit denen sie arbeiten kann. Sie erstellt die Quellzeilen, und erst danach kann WHERE entscheiden, welche davon beibehalten werden.

SELECT e.name, d.name AS dept
FROM employees e
JOIN departments d ON d.id = e.department_id
WHERE e.salary > 50000;

Typische Falle: Alias in WHERE nicht verwendbar

Die am häufigsten gefragte Konsequenz: Ein SELECT-Alias kann nicht in WHERE verwendet werden, weil WHERE vor SELECT ausgeführt wird. Der folgende Code zeigt den Fehler und die Lösung: Wiederholen Sie den Ausdruck.

-- FAILS: alias 'annual' unknown in WHERE
SELECT salary * 12 AS annual
FROM employees
WHERE annual > 600000;

-- FIX: repeat the expression
SELECT salary * 12 AS annual
FROM employees
WHERE salary * 12 > 600000;

Typische Falle: WHERE kann Aggregatwerte nicht sehen

WHERE wird vor der Gruppierung ausgeführt und kann daher Aggregatwerte wie COUNT() nicht sehen. Dafür gibt es HAVING: WHERE filtert Zeilen, HAVING filtert Gruppen nach der Aggregation.

-- WHERE cannot use COUNT(*)
SELECT department, COUNT(*) AS headcount
FROM employees
GROUP BY department
HAVING COUNT(*) > 5;

Warum ORDER BY Aliase verwenden kann

Das Gegenstück: ORDER BY wird nach SELECT ausgeführt und kann daher SELECT-Aliase verwenden. Derselbe Alias, ein anderer Zeitpunkt – deshalb funktioniert es hier, aber nicht in WHERE.

SELECT name, salary * 12 AS annual
FROM employees
ORDER BY annual DESC;

Wo DISTINCT einzuordnen ist

DISTINCT wird nach SELECT, aber vor ORDER BY ausgeführt. Da es anhand der Ausgabespalten doppelte Zeilen entfernt, können Sie nur nach etwas sortieren, das in der Auswahlliste enthalten ist.

-- ERROR in many engines:
-- ORDER BY column not in the DISTINCT select list
SELECT DISTINCT department
FROM employees
ORDER BY hire_date;

Durchgespielte Ausführung einer vollständigen Abfrage

Verfolgen wir eine echte Abfrage durch die einzelnen Schritte: FROM liest die Zeilen, WHERE filtert, GROUP BY bildet Gruppen, HAVING behält Gruppen bei, SELECT berechnet Werte, ORDER BY sortiert und LIMIT begrenzt das Ergebnis.

SELECT customer_id, SUM(amount) AS total
FROM orders
WHERE status = 'paid'
GROUP BY customer_id
HAVING SUM(amount) > 1000
ORDER BY total DESC
LIMIT 10;

Logische vs. physische Ausführung

Eine Feinheit, mit der Sie Eindruck machen können: Dies ist die logische Reihenfolge, die die Korrektheit definiert. Der physische Plan des Optimierers kann davon abweichen, solange er dieselben Zeilen liefert.

Eine Eselsbrücke für die Reihenfolge

Eine Eselsbrücke: Stellen Sie sich vor, wie Zeilen durch eine Pipeline fließen und jeder Schritt eine kleinere Menge an den nächsten übergibt. Wenn etwas fehlschlägt, prüfen Sie, ob ein früherer Schritt das Benötigte erzeugt hat.

Schnelltest

Wenden Sie die Ausführungsreihenfolge an, um den Fehler zu erkennen.

Zusammenfassung

Zusammenfassung: Die logische Reihenfolge lautet FROM, WHERE, GROUP BY, HAVING, SELECT, DISTINCT, ORDER BY, LIMIT. WHERE wird vor SELECT ausgeführt (keine Aliase); ORDER BY wird danach ausgeführt (Aliase funktionieren).

Häufig gestellte Fragen

Ist die Lektion „Die logische Reihenfolge der Abfrageausführung“ kostenlos?

Ja — der vollständige Text von „Die logische Reihenfolge der Abfrageausführung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Interview Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Interview Prep-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Die logische Reihenfolge der Abfrageausführung“?

Warum FROM vor SELECT ausgeführt wird und wie die tatsächliche Ausführungsreihenfolge ein Dutzend Fangfragen beantwortet Du übst SQL Interview Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um SQL Interview Prep zu starten?

Keine Vorkenntnisse erforderlich. SQL Interview Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Die logische Reihenfolge der Abfrageausführung“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser SQL Interview Prep-Lektion Code schreiben und ausführen?

Ja. Jede SQL Interview Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Was ist SQL und warum wird es in Vorstellungsgesprächen gefragt?
  2. Die logische Reihenfolge der Abfrageausführung
  3. Primärschlüssel, Fremdschlüssel und Constraints
  4. Ein Schema unter Zeitdruck lesen
← Zurück zu SQL Interview Prep