Database
 sql >> Datenbank >  >> RDS >> Database

SQL-Alias ​​erklärt

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.