Der SQL-Alias ist ein nettes kleines Feature von SQL, mit dem Sie prägnanteren Code schreiben und Spaltennamen erstellen können, wenn kein Spaltenname vorhanden ist.
Es gibt zwei SQL-Aliastypen; Spaltenaliase und Tabellenaliase. In diesem Artikel gebe ich einen Überblick über beides.
Was ist ein Alias in SQL?
In SQL ist ein Alias eine Funktion, die es uns ermöglicht, einer Spalte oder Tabelle in unseren SQL-Abfragen vorübergehend einen anderen Namen zuzuweisen. Dadurch können wir die Codemenge in unseren Abfragen reduzieren, was besonders bei komplexen Abfragen von Vorteil sein kann.
Es ermöglicht uns auch, Spaltennamen für Clientanwendungen bereitzustellen, wenn kein Spaltenname vorhanden ist (z. B. wenn ein berechnetes Feld verwendet wird).
Vorteile von SQL-Aliassen
Einige der Hauptvorteile von SQL-Aliassen sind:
- Ermöglicht es Ihnen, den Spaltenüberschriften besser lesbare Namen zu geben, wenn sie in den Ergebnissen angezeigt werden
- Ermöglicht Clientanwendungen, auf ein berechnetes Feld nach Namen zu verweisen, wenn kein Spaltenname vorhanden ist
- Ermöglicht es Ihnen, Code zu reduzieren und Ihre Abfragen präziser zu gestalten
- Kann als Verschleierungstechnik verwendet werden, um die Namen der zugrunde liegenden Spalten einer Abfrage zu schützen
Ich sollte darauf hinweisen, dass die Zuweisung eines Alias die Spalte oder Tabelle nicht wirklich umbenennt. Es bietet einfach einen alternativen Namen, der verwendet werden kann, um darauf zu verweisen.
Alias-Syntax
Um einen Alias in SQL zu erstellen, folgen Sie einfach dem Spalten- oder Tabellennamen mit Ihrem gewählten Alias. Optional können Sie den AS
verwenden Schlüsselwort zwischen dem Spalten-/Tabellennamen und Ihrem Alias.
So für Spalten:
SELECT Column1 AS Alias1
...
or
SELECT Column1 Alias1
...
Oder so für Tabellen:
...
FROM Table1 AS Alias1
...
or
...
FROM Table1 Alias1
...
Die folgenden Beispiele werden dies besser veranschaulichen.
Der Spaltenalias
Der wahrscheinlich am häufigsten verwendete Alias ist der Spaltenalias. Mit dem Spaltenalias können Sie Ihren Spalten einen temporären Namen geben.
Außerdem können Sie an Stellen, an denen kein Spaltenname vorhanden ist, einen Spaltennamen angeben.
Die folgenden beiden Beispiele zeigen dieselbe Abfrage, die mit und ohne Spaltenaliase geschrieben wurde.
Ohne Spaltenalias
Hier ist eine einfache SQL-Abfrage, die nicht Verwenden Sie Spaltenaliase.
SELECT
f_name,
l_name
FROM customers;
Ergebnis:
+----------+----------+ | f_name | l_name | |----------+----------| | Homer | Connery | | Bart | Pitt | | Nancy | Simpson | | Boris | Trump | +----------+----------+
In diesem Fall habe ich keine Spaltenaliase angegeben, sodass die tatsächlichen zugrunde liegenden Spaltennamen als Spaltenüberschriften in den Ergebnissen dargestellt wurden.
Mit Spaltenalias
Hier ist dieselbe Abfrage, außer dass ich diesmal Spaltenaliase verwende.
SELECT
f_name AS FirstName,
l_name AS LastName
FROM customers;
Ergebnis:
+-------------+------------+ | FirstName | LastName | |-------------+------------| | Homer | Connery | | Bart | Pitt | | Nancy | Simpson | | Boris | Trump | +-------------+------------+
Beachten Sie, dass die Spaltenaliase als Spaltenüberschriften in den Ergebnissen verwendet wurden.
Spaltenaliase auf berechneten Feldern
Spaltenaliase können auch für berechnete Felder verwendet werden, in denen kein Spaltenname vorhanden ist. Ich meine nicht berechnete Spalten, bei denen es einen Spaltennamen gibt, sondern Felder, bei denen der Wert von einem anderen Ausdruck als dem Wert einer einfachen Spalte abgeleitet wird.
„Wie könnte es keinen Spaltennamen geben?“ Sie können fragen.
Nun, es gibt viele Gelegenheiten, bei denen Sie möglicherweise feststellen, dass in einer Abfrage kein Spaltenname zurückgegeben wird. Haben Sie jemals (No column name)
gesehen als Spaltenüberschrift Ihrer Abfrageergebnisse?
Es gibt viele Situationen, in denen das passieren kann.
Ohne Spaltenalias
Hier ist ein Beispiel für eine Abfrage, die keine Spaltenüberschrift zurückgibt.
SELECT
f_name + ' ' + l_name
FROM customers;
Ergebnis:
+--------------------+ | (No column name) | |--------------------| | Homer Connery | | Bart Pitt | | Nancy Simpson | | Boris Trump | +--------------------+
In diesem Beispiel werden der Vor- und Nachname jedes Kunden verkettet und das Ergebnis als eine Spalte dargestellt. Das einzige Problem ist, dass das DBMS nicht weiß, wie es die Spalte nennen soll.
Dies ist eine perfekte Gelegenheit für einen Alias!
Mit einem Spaltenalias
Hier ist das gleiche Beispiel, außer dass ich dem Ergebnis jetzt einen Spaltenalias zuweise.
SELECT
f_name + ' ' + l_name AS FullName
FROM customers;
Ergebnis:
+---------------+ | FullName | |---------------| | Homer Connery | | Bart Pitt | | Nancy Simpson | | Boris Trump | +---------------+
Das Gute daran ist, dass jetzt jede Client-Anwendung diese Ergebnisse nehmen und über ihren Alias auf das berechnete Feld verweisen kann.
Beachten Sie, dass das obige Beispiel den Zeichenfolgenverkettungsoperator von SQL Server verwendet (+
). In DB2, Oracle, PostgreSQL und SQLite müssen Sie ||
verwenden . Und in MySQL und MariaDB verwenden Sie CONCAT()
Funktion. Das hat zwar nichts mit SQL-Aliassen zu tun, aber ich dachte, ich erwähne es einfach 🙂
Aliase mit Leerzeichen
Es ist auch möglich, Aliase mit Leerzeichen zu erstellen.
Schließen Sie dabei den Alias in doppelte Anführungszeichen ein. In einigen DBMSs können Sie optional andere Zeichen verwenden (z. B. eckige Klammern []
im SQL-Server).
SELECT
f_name + ' ' + l_name AS "Full Name"
FROM customers;
Ergebnis:
+---------------+ | Full Name | |---------------| | Homer Connery | | Bart Pitt | | Nancy Simpson | | Boris Trump | +---------------+
Denken Sie daran, dass es im Allgemeinen nicht als gute Praxis angesehen wird, Leerzeichen in Aliasnamen zu verwenden. Leerzeichen können alle Arten von Problemen für Client-Anwendungen verursachen, und aus diesem Grund sollten Sie es im Allgemeinen vermeiden, Leerzeichen in Ihren Spaltenaliasnamen einzuschließen.
Weglassen des AS
Schlüsselwort
Wie bereits erwähnt, der AS
Schlüsselwort ist optional. Daher könnten wir jedes der vorherigen Beispiele ohne AS
umschreiben Schlüsselwort.
Hier ist ein Beispiel.
SELECT
f_name FirstName,
l_name LastName
FROM customers;
Ergebnis:
+-------------+------------+ | FirstName | LastName | |-------------+------------| | Homer | Connery | | Bart | Pitt | | Nancy | Simpson | | Boris | Trump | +-------------+------------+
Obwohl Sie AS
weglassen können Schlüsselwort, einige SQL-Profis ziehen es aus Gründen der Lesbarkeit vor, es immer einzufügen.
Welche Syntax Sie auch immer bevorzugen, ich würde empfehlen, sie konsistent zu halten. Wenn Sie AS
weglassen möchten Schlüsselwort, dann lassen Sie es überall weg. Wenn Sie es einschließen möchten, dann fügen Sie es überall ein.
Der Tabellen-Alias
Der Tabellen-Alias ähnelt dem Spalten-Alias, aber wie der Name schon sagt, ist der Tabellen-Alias für Tabellen.
Der Tabellenalias wird auch als Korrelationsname bezeichnet .
Der Tabellenalias wird häufig beim Ausführen von Joins verwendet. Dies kann besonders bei komplexen Abfragen nützlich sein, da es dazu beitragen kann, den Code übersichtlicher und lesbarer zu halten.
Unten sind zwei Beispiele; eine ohne Tabellen-Alias und eine mit einem Tabellen-Alias.
Beispiel ohne Tabellenalias
Hier ist ein einfaches Beispiel für eine Abfrage, die eine Linksverknüpfung zwischen zwei Tabellen durchführt.
SELECT
PetTypes.PetType,
COUNT(Pets.PetTypeId) AS Count
FROM Pets
LEFT JOIN PetTypes
ON Pets.PetTypeId = PetTypes.PetTypeId
GROUP BY PetTypes.PetType
ORDER BY Count DESC, PetTypes.PetType;
Ergebnis:
+-----------+---------+ | PetType | Count | |-----------+---------| | Dog | 4 | | Cat | 3 | | Bird | 1 | +-----------+---------+
Beachten Sie, dass wir den Namen jeder Tabelle buchstabieren, wo immer wir darauf verweisen müssen.
Beispiel mit einem Tabellenalias
Hier ist dasselbe Beispiel, außer mit Tabellenaliasen.
SELECT
pt.PetType,
COUNT(p.PetTypeId) AS Count
FROM Pets AS p
LEFT JOIN PetTypes AS pt
ON p.PetTypeId = pt.PetTypeId
GROUP BY pt.PetType
ORDER BY Count DESC, pt.PetType;
Ergebnis:
+-----------+---------+ | PetType | Count | |-----------+---------| | Dog | 4 | | Cat | 3 | | Bird | 1 | +-----------+---------+
Wie bei Spaltenaliasen ist der AS
Das Schlüsselwort ist bei Tabellenaliasen optional. In Oracle der AS
Schlüsselwort wird nicht einmal mit Tabellenaliasen unterstützt (obwohl es mit Spaltenaliasen unterstützt wird).
Daher könnten wir unser Beispiel wie folgt umschreiben.
SELECT
pt.PetType,
COUNT(p.PetTypeId) AS Count
FROM Pets p
LEFT JOIN PetTypes pt
ON p.PetTypeId = pt.PetTypeId
GROUP BY pt.PetType
ORDER BY Count DESC, pt.PetType;
Ergebnis:
+-----------+---------+ | PetType | Count | |-----------+---------| | Dog | 4 | | Cat | 3 | | Bird | 1 | +-----------+---------+
So oder so, gleiches Ergebnis.