Zurück zur Artikelliste Artikel
8 Leseminuten

Verwendung von Aliasen mit SQL JOINs

SQL-Aliase sind benutzerdefinierte Namen, die Sie den Spalten und Tabellen geben können, die Sie in Ihre Abfragen aufnehmen. Aliase sind sehr nützlich, da sie die Lesbarkeit und Wartbarkeit Ihrer Abfrage erheblich verbessern können. Wir werden uns die Verwendung von SQL-Aliasnamen mit JOIN genauer ansehen und erläutern, warum Sie dies möglicherweise brauchen.

Es gibt mehrere Arten von Aliasen, die Sie in SQL verwenden können:

  1. Aliase für Tabellen.
  2. Aliasnamen für Tabellenspalten.
  3. Aliasnamen für Unterabfragen.

Obwohl es verschiedene Möglichkeiten gibt, Aliase in Ihren Abfragen zu verwenden, ist die Syntax für alle diese Methoden ähnlich. Schauen wir uns die Syntax von Aliasen an.

SQL-Alias-Syntax

Die unten dargestellte Syntax gilt sowohl für Spalten- als auch für Tabellenaliase:

SELECT
  t1.column_name (AS) new_column_name,
  t2.column_name (AS) other_new_column_name,
  ...
FROM table1 (AS) t1
JOIN table2 (AS) t2
  ON t1.column_name = t2.column_name
…

Wenn Sie sich von dieser Syntax überfordert fühlen, sollten Sie sich mit den Grundlagen von SQL-Abfragen vertraut machen, indem Sie sich für diesen SQL für Anfänger Kurs anmelden. Damit erhalten Sie eine solide Grundlage, die es Ihnen ermöglicht, SQL-Abfragen problemlos zu lesen, zu schreiben und zu verstehen.

SQL-Spaltenalias

Schauen wir uns zunächst die Spaltenalias an:

 t1.column_name (AS) new_column_name,
 t2.column_name (AS) other_new_column_name

Das Schlüsselwort AS ist hier optional. Sie können es einfügen, wenn Sie wollen, aber die Abfrage verhält sich trotzdem genau gleich.

Der Alias wird direkt nach dem Spaltennamen (oder dem Schlüsselwort AS ) definiert. In diesem Fall lauten unsere Aliasnamen new_column_name und other_new_column_name.

Wenn Sie Leerzeichen in Ihren neuen Spaltennamen einfügen möchten, schließen Sie ihn in Anführungszeichen ein. Wir könnten dieses Beispiel zu aktualisieren:

SELECT t1.column_name (AS) 'new column name'

Wenn Sie hier die einfachen Anführungszeichen weglassen, würde ein Fehler auftreten.

Ok, das sind die SQL-Aliase für Spaltennamen. Sehen wir uns nun die Tabellenaliase an.

SQL-Tabellen-Aliase

Wir definieren Tabellen-Aliase wie folgt:

FROM table1 (AS) t1
JOIN table2 (AS) t2

Wie bisher ist die Einbeziehung des AS-Schlüsselworts völlig optional. Wir deklarieren den Alias für table1 als t1 an. Analog dazu lautet der Alias für table2 ist t2.

Wenn Sie Datenbanktabellen umbenennen, müssen Sie die Tabellen-Aliase in der ON-Bedingung, in der SELECT Liste bei der Auswahl der Spalten (wenn die Tabelle für die Spalte angegeben werden muss) und in anderen Teilen der Abfrage verwenden.

Sie können sehen, dass wir diese Regel befolgen, indem wir t1 und t2 in unsere SELECT Klausel aufnehmen:

SELECT
  t1.column_name (AS) new_column_name,
  t2.column_name (AS) other_new_column_name,
  ... 

SQL-Alias für Unterabfragen

Eine SQL-Unterabfrage ist eine Abfrage innerhalb einer anderen Abfrage. Schauen wir uns die Syntax für die Verwendung von Aliasen in einer Unterabfrage an.

SELECT column_1, 
       column_2 = (SELECT COUNT(t2.id)
                         FROM table_2 t2
                        WHERE t2.id = t1.id)
  FROM table_1 t1

Die Unterabfrage ist der Teil der Abfrage, der fett gedruckt ist. Sie können sehen, wie Aliase uns helfen, an jedem Teil der Abfrage auf die richtige Tabelle zuzugreifen.

Damit ist unser Blick auf die SQL-Alias-Syntax beendet. Sehen wir uns nun einige praktische Beispiele für die Verwendung von Aliasen mit JOIN an!

Beispiele für die Verwendung von SQL-Alias mit JOIN

In diesem Abschnitt sehen wir uns einige häufige Anwendungsfälle von Aliasen an und erklären, wie sie jeweils implementiert werden. SQL-JOINs ist ein kniffliges Thema - es ist in diesem Artikel über SQL-Themen, die Übung erfordern enthalten . Je mehr Sie sich mit praktischen Beispielen beschäftigen, desto besser werden Sie zurechtkommen.

Verwendung eines Alias mit nicht eindeutigen Spaltennamen

Wenn Sie mit mehreren Tabellen arbeiten, kommt es häufig vor, dass derselbe Spaltenname in beiden Tabellen vorkommt. Dies ist häufig bei der Spalte id der Fall. Hier ein Beispiel, das dies verdeutlicht:

SELECT employee.id, customer.id, employee_name, employee_department 
FROM employees 
INNER JOIN customer 
ON employee.id = customer.employee_id 

Die resultierenden Daten werden wie folgt angezeigt:

ididemployee_nameemployee_department
1214John JacobsHuman Resources

Dieses Ergebnis wird die Beteiligten verwirren, da sie nicht erkennen können, welche ID zu welcher Tabelle gehört. Die Einführung eines Spaltenalias für jede id-Spalte kann Abhilfe schaffen:

SELECT employee.id employee_id, customer.id customer_id, employee_name, employee_department 
FROM employees 
INNER JOIN customer 
ON employee.id = customer.employee_id 

Jetzt erhalten wir ein viel verständlicheres Ergebnis:

employee_idcustomer_idemployee_nameemployee_department
1214John JacobsHuman Resources

Verbesserung der Lesbarkeit von Abfragen

Ein Alias kann die Lesbarkeit Ihrer Abfrage vereinfachen und verbessern. Stellen Sie sich zum Beispiel vor, es gäbe eine Spalte namens cn_index, in der Kundennamen gespeichert sind. Es ist nicht sofort ersichtlich, wofür diese Spalte steht; Sie bräuchten die Dokumentation des Datenmodells oder jemanden, der sie Ihnen erklärt, um ihre Bedeutung zu entschlüsseln. Dieses Problem kann durch die Verwendung eines Alias in jeder Abfrage, die diese Spalte enthält, verringert werden. Dies könnte so aussehen:

SELECT cn_index AS customer_id 
FROM customers

Das Gleiche gilt für schlecht benannte Tabellen, die Sie in Ihrer Datenbank finden.

Verbesserung der Wartbarkeit von Abfragen

Ein Alias hilft auch bei der Wartungsfreundlichkeit. Stellen Sie sich vor, Sie hätten eine Abfrage wie die folgende:

SELECT customer.id, customer.name, customer.age, client.id 
FROM customer 
JOIN client 
ON customer.id = client.id

Stellen Sie sich nun vor, es gäbe eine Änderung an unserer customer Tabelle, z.B. die Umbenennung in customers_europe. Dann müssten Sie die Änderung überall dort vornehmen, wo auf diese Tabelle verwiesen wird:

SELECT customers_europe.id, customers_europe.name, customers_europe.age, client.id
FROM customers_europe
JOIN client 
ON customers_europe.id = client.id

Dies mag nicht wie ein großer Schritt erscheinen, aber es handelt sich um eine kurze, einfache Abfrage. Stellen Sie sich vor, Sie müssten wegen dieser Änderung mehrere gespeicherte Prozeduren und Funktionen aktualisieren.

Schauen wir uns an, wie Aliase bei diesem Problem helfen. Unsere erste Abfrage könnte nach der Aktualisierung unter Verwendung eines Alias wie folgt aussehen:

SELECT c.id, c.name, c.age, client.id
FROM customer c
JOIN client
ON c.id = client.id

Wenn wir nun unsere Tabelle aktualisieren wollen, müssen wir die Änderung nur an einer Stelle vornehmen:

SELECT c.id, c.name, c.age, client.id
FROM customers_europe c
JOIN client
ON c.id = client.id

Dies führt zu einer enormen Zeitersparnis, wenn Sie eine große Anzahl bestehender Abfragen, Funktionen und gespeicherter Verfahren aktualisieren müssen.

Self-Joins

Ein Self-Join ermöglicht es Ihnen, eine Tabelle mit sich selbst zu verknüpfen. Dies ist nützlich, um hierarchische Daten abzufragen oder Zeilen innerhalb derselben Tabelle zu vergleichen. Beim Self-Join einer Tabelle können Sie eine LEFT JOIN oder eine INNER JOIN verwenden. Beim Self-Join ist es wichtig, für jede Instanz der Tabelle einen logischen SQL-Alias zu verwenden.

Schauen wir uns an, wie wir eine Abfrage schreiben können, die eine Tabelle mit sich selbst verbindet. Für unser Beispiel werden wir die folgende Tabelle verwenden, tbl_employee. Sie enthält alle Mitarbeiter des Unternehmens, die ID ihrer Abteilung und die ID ihres Vorgesetzten:

idemployee_namedepartment_idmanager_id
1Montgomery Burns4NULL
2Waylon Smithers11
3Homer Simpson21
4Carl Carlson51
5Lenny Leonard31
6Frank Grimes23

Angenommen, wir wollen eine Ergebnismenge, die nur einen Mitarbeiter und seinen Vorgesetzten anzeigt. Wie können wir das erreichen? Durch die Verwendung von Aliasen in Kombination mit einem Self-Join. Sehen Sie sich den folgenden Codeausschnitt an:

SELECT e.employee_name AS 'Employee',
m.employee_name AS 'Manager'
FROM tbl_employee e
LEFT JOIN tbl_employee m
ON m.id = e.manager_id

Beachten Sie, dass wir LEFT JOIN als Self-Join verwendet haben. Achten Sie beim Verknüpfen von Tabellen auf den Fehler der mehrdeutigen Spalte, der leicht auftreten kann, wenn Sie nicht vorsichtig sind. Um diesen Fehler zu vermeiden, müssen Sie den Tabellenalias ausdrücklich im Spaltennamen angeben (e.employee_name und m.employee_name).

Wenn Sie die obige Abfrage ausführen, erhalten Sie die folgende Ergebnismenge:

EmployeeManager
Montgomery BurnsNULL
Waylon SmithersMontgomery Burns
Homer SimpsonMontgomery Burns
Carl CarlsonMontgomery Burns
Lenny LeonardMontgomery Burns
Frank GrimesHomer Simpson

Das ist unser gewünschtes Ergebnis! Sie können jeden Mitarbeiter und seinen Vorgesetzten deutlich erkennen. Die meisten Mitarbeiter unterstehen Mr. Burns. Sie können jedoch sehen, dass der Manager von Frank Grimes Homer Simpson ist. Beachten Sie den NULL-Wert unter der Spalte Manager für Montgomery Burns. Das liegt daran, dass Montgomery Burns keinen Vorgesetzten hat; er ist der Chef.

Ändern wir die Abfrage geringfügig und verwenden diesmal eine INNER JOIN für unseren Self-Join:

SELECT e.employee_name AS 'Employee',
m.employee_name AS 'Manager'
FROM tbl_employee e
INNER JOIN tbl_employee m
ON m.id = e.manager_id
EmployeeManager
Waylon SmithersMontgomery Burns
Homer SimpsonMontgomery Burns
Carl CarlsonMontgomery Burns
Lenny LeonardMontgomery Burns
Frank GrimesHomer Simpson

Der einzige große Unterschied ist das Fehlen von Montgomery Burns in der Spalte Employee. Der einzige große Unterschied ist das Fehlen von Montgomery Burns in der Spalte manager_id, da der Wert für ihn NULL war und INNER JOIN nur übereinstimmende Spalten zurückgibt.

Jetzt können Sie Self-Joins durchführen, die für viele verschiedene Anwendungsfälle geeignet sind. Weitere Beispiele finden Sie in diesem ausgezeichneten illustrierten Leitfaden zu Self-Joins. Der Self-Join wird auch in diesem nützlichen SQL JOIN Spickzettel vorgestellt. Setzen Sie ein Lesezeichen auf diese Seite oder laden Sie sie herunter, damit Sie immer einen schnellen Überblick über die verschiedenen JOIN-Typen haben.

Erstellen Sie aussagekräftige Ergebnisse

Wenn Sie Aggregatfunktionen verwenden, wird das Ergebnis standardmäßig in einer Spalte ohne Namen angezeigt. Ein Alias ist eine perfekte Möglichkeit, den Ergebnissen Ihrer Aggregatfunktionen eine Bedeutung zu verleihen.

Schauen wir uns ein kurzes Beispiel an, um zu sehen, wie es funktioniert. Stellen Sie sich vor, wir haben eine Tabelle namens payments die einige Zahlungsdaten enthält:

payment_amountpayment_date
1200.992021-01-18
189.232021-02-15
3002.432021-02-25
33.432021-03-03

Hier ist eine Abfrage:

SELECT SUM(payment_amount)
FROM payments

Die Ausführung dieser Abfrage ergibt das folgende Ergebnis:

(No column name)
4,426.08

Wir haben keine Ahnung, wofür dieses Ergebnis steht, da es keinen Spaltennamen hat. Aktualisieren wir unsere Abfrage mit einem Alias, um die Ergebnisse aussagekräftiger zu machen.

SELECT SUM(payment_amount) AS 'Sum of payments'
FROM payments

Führen Sie die Abfrage aus, um unsere neuen und verbesserten Abfrageergebnisse zu sehen:

Sum of payments
4,426.08

Dies waren nur einige Beispiele für die Verwendung von SQL-Alias. Weitere Beispiele finden Sie in diesem Blogbeitrag über die Verwendung von Aliasen in SQL.

SQL-Alias JOIN erklärt

Wir haben uns damit beschäftigt, wie ein Alias die Lesbarkeit und Wartbarkeit Ihrer SQL-Abfrage verbessern kann, ganz zu schweigen von der wichtigen Rolle, die er bei Self-Joins spielt. Wir haben uns viele verschiedene Anwendungsfälle und Beispiele angesehen. Wenn Sie eine umfassendere Ausbildung zu diesem Thema wünschen, besuchen Sie den Kurs LearnSQL.de SQL-JOINs .

Wenn Sie mehr als nur JOINs lernen möchten - vielleicht suchen Sie eine komplette SQL-Ausbildung - wäre der SQL von A bis Z Lernkurs die bessere Option für Sie. Nach Abschluss des Kurses verfügen Sie über die notwendigen Werkzeuge (einschließlich JOINs und Aliasen), um frei und effizient mit jeder Art von Daten zu arbeiten.