Spalten projizieren und Fallstricke bei Aliasen
Warum Sie in WHERE keinen SELECT-Alias referenzieren können und wie Interviewer den Gültigkeitsbereich von Aliasen prüfen
Spalten projizieren und Fallstricke bei Aliasen ist eine kostenlose SQL Interview Prep-Lektion auf CoddyKit. Dies ist Lektion 1 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.
Projektion: Spalten auswählen
Die Auswahl der Spalten, die eine Abfrage zurückgibt, nennt man Projektion – genau das tun Sie jedes Mal, wenn Sie SELECT schreiben. Nennen Sie im echten Code die Spalten ausdrücklich; verwenden Sie SELECT * nur zum schnellen Erkunden.
SELECT id, first_name, email
FROM employees;Warum Interviewer SELECT * nicht mögen
Warum mögen Interviewer SELECT * im Anwendungscode nicht? Es ist fragil (die Spaltenreihenfolge kann sich ändern), verschwendet Bandbreite, beeinträchtigt die Verwendung von Indizes und verschleiert, was Sie tatsächlich benötigen. Nennen Sie Ihre Spalten. 👍
Eine Spalte mit AS umbenennen
Ein Alias benennt eine Spalte in der Ausgabe um. Verwenden Sie AS für mehr Klarheit – besonders nützlich ist das bei berechneten Spalten, da Ausdrücke wie salary * 12 dadurch eine klare, lesbare Überschrift erhalten.
SELECT first_name AS name,
salary * 12 AS annual_salary
FROM employees;Aliase mit Leerzeichen in Anführungszeichen setzen
Wenn ein Alias Leerzeichen oder ein reserviertes Wort enthält, müssen Sie ihn in Anführungszeichen setzen. Die portable, standardkonforme Variante sind doppelte Anführungszeichen. Tipp: Verwenden Sie einfach Namen im snake_case-Format und verzichten Sie ganz auf Anführungszeichen.
SELECT salary AS "Annual Pay"
FROM employees;Die große Falle: Gültigkeitsbereich eines Alias in WHERE
Hier ist die am häufigsten geprüfte Falle: Sie definieren einen Alias in SELECT und filtern anschließend in WHERE danach – das schlägt fehl. WHERE wird vor SELECT ausgeführt, daher existiert der Alias zu diesem Zeitpunkt noch nicht.
-- This raises an error
SELECT salary * 12 AS annual_salary
FROM employees
WHERE annual_salary > 100000;Der Grund: Logische Ausführungsreihenfolge
Die Lösung besteht darin, die logische Reihenfolge der Klauseln zu kennen: FROM, WHERE, GROUP BY, HAVING, SELECT und anschließend ORDER BY. SELECT wird fast zuletzt ausgeführt, daher können frühere Klauseln seine Aliase nicht sehen.
Lösung 1: Den Ausdruck wiederholen
Die portabelste Lösung ist einfach: Wiederholen Sie den Ausdruck in WHERE anstelle des Alias. Das ist etwas ausführlicher, funktioniert aber in jeder Datenbank und jedes Mal.
SELECT salary * 12 AS annual_salary
FROM employees
WHERE salary * 12 > 100000;Lösung 2: In eine Subquery oder CTE einschließen
Wenn das Wiederholen eines langen Ausdrucks unschön wirkt, berechnen Sie ihn zuerst in einer Subquery oder CTE. Dort wird der Alias zu einer echten Spalte, sodass die äußere WHERE-Klausel danach filtern kann.
SELECT *
FROM (
SELECT first_name, salary * 12 AS annual_salary
FROM employees
) t
WHERE annual_salary > 100000;Wo Aliase erlaubt sind: ORDER BY
Die gute Nachricht: ORDER BY kann einen SELECT-Alias verwenden, weil es nach SELECT ausgeführt wird. WHERE, GROUP BY und HAVING können Aliase also nicht sehen – ORDER BY dagegen schon.
SELECT first_name, salary * 12 AS annual_salary
FROM employees
ORDER BY annual_salary DESC;Dialektunterschiede, die Sie erwähnen sollten
Erwähnenswert ist: MySQL erlaubt Aliase in GROUP BY und HAVING relativ großzügig, während Postgres und SQL Server sich an den Standard halten. Leiten Sie die Antwort aus der logischen Reihenfolge her und erwähnen Sie dann die Ausnahme.
Tabellenaliase und Spaltenaliase
Verwechseln Sie sie nicht. Ein Tabellenalias verkürzt einen Tabellennamen und ist überall sichtbar, auch in WHERE. Ein Spaltenalias benennt die Ausgabe um und ist das nicht – also genau umgekehrt.
SELECT e.first_name, e.salary AS pay
FROM employees AS e
WHERE e.salary > 50000;Kurzer Test
Testen Sie die zentrale Stolperfalle.
Zusammenfassung
Zusammenfassung: Bevorzugen Sie explizite Spalten gegenüber SELECT * und verwenden Sie Aliase mit AS. Ein SELECT-Alias ist in WHERE/GROUP BY/HAVING unsichtbar, funktioniert aber in ORDER BY. Beheben Sie das Problem, indem Sie den Ausdruck wiederholen oder eine CTE verwenden.
Häufig gestellte Fragen
Ist die Lektion „Spalten projizieren und Fallstricke bei Aliasen“ kostenlos?
Ja — der vollständige Text von „Spalten projizieren und Fallstricke bei Aliasen“ 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 „Spalten projizieren und Fallstricke bei Aliasen“?
Warum Sie in WHERE keinen SELECT-Alias referenzieren können und wie Interviewer den Gültigkeitsbereich von Aliasen prüfen 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 1 von 4.
Wie lange dauert die Lektion „Spalten projizieren und Fallstricke bei Aliasen“?
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
- Spalten projizieren und Fallstricke bei Aliasen
- Berechnete Spalten und die Rangfolge von Ausdrücken
- DISTINCT oder GROUP BY für Eindeutigkeit
- CASE-Ausdrücke in SELECT