English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQL 表、列别名(Aliases)

在本教程中,您将学习如何在SQL语句中为表或表列指定简短的别名。

定义表别名

当多个表在一个单一的查询中被加入时,你需要在每一列的名字前面加上所属的表的名称,例如employees.dept id, departments.dept id等,以避免混乱和模糊列错误情况下不同表中的列有相同的名称。但是,如果表名很长,并且多次出现在查询中,那么编写查询将成为一项困难和令人烦恼的任务。

因此,为了节省时间并避免编写完整的表名,可以为每个表提供一个简短的别名,并在查询中使用该别名来引用其列。

为了清楚地理解这一点,让我们来看看下面employeesdepartments表。

+--------+--------------+------------+---------+
| emp_id | emp_name     | hire_date  | dept_id |
+--------+--------------+------------+---------+
|      1 | Ethan Hunt   | 2001-05-01 |       4 |
|      2 | Tony Montana | 2002-07-15 |       1 |
|      3 | Sarah Connor | 2005-10-18 |       5 |
|      4 | Rick Deckard | 2007-01-03 |       3 |
|      5 | Martin Blank | 2008-06-24 |    NULL |
+--------+--------------+------------+---------+

+---------+------------------+
| dept_id | dept_name        |
+---------+------------------+
|       1 | Administration   |
|       2 | Customer Service |
|       3 | Finance          |
|       4 | Human Resources  |
|       5 | Sales            |
+---------+------------------+
表: employees
表: departments

以下是一个查询示例,通过使用公共的dept id字段将雇员和部门表连接起来,以检索雇员的ID、名称以及他们的部门名称。

SELECT employees.emp_id, employees.emp_name, departments.dept_name
FROM employees LEFT JOIN departments
ON employees.dept_id = departments.dept_id ORDER BY emp_id;

Dies ist eine komprimierte Version der vorherigen Abfrage mit Tabellenalias:

SELECT t1.emp_id, t1.emp_name, t2.dept_name
FROM employees AS t1 LEFT JOIN departments AS t2
ON t1.dept_id = t2.dept_id ORDER BY emp_id;

Führen Sie eine der folgenden Anweisungen aus, und Sie erhalten die gleiche Ausgabe wie folgt:

+--------+-----------------+--------------------+
| emp_id | emp_name                                                                       | dept_name                                                               |
+--------+-----------------+--------------------+
|      1 | Ethan Hunt                           | Human Resources                                                   |
|      2 | Tony Montana                       | Administration                                                   |
|      3 | Sarah Connor                       | Sales                                                              |
|      4 | Rick Deckard                       | Finance                                                          |
|      5 | Martin Blank                       | NULL                                                               |
+--------+-----------------+--------------------+

Wie Sie sehen können, wie viel Tipparbeit durch die Verwendung von Tabellenalias gespart werden kann.

Sehen Sie sich " SQL JOINSAbschnitt, um mehr über Tabellenverbindungen zu erfahren.

Definieren Sie die Alias-Namen für Tabellenspalten

In MySQL kann der Name der Ausgabekolonne, die durch SQL-Funktionen generiert wird, schwer zu verstehen oder schwer zu verstehen sein. In diesem Fall können Sie temporäre Aliase für die Ausgabekolonne verwenden.

Bedenken Sie die folgende Abfrage, bei der wir die Daten in der Spalte hire_date mit Ausdrücken neu formatiert haben, um eine benutzerdefinierte Ausgabe zu generieren:

-- MySQL Datenbank-Syntax 
SELECT emp_name, DATE_FORMAT(hire_date, '%M %e, %Y') FROM employees;

Führen Sie die obige Anweisung aus, und Sie erhalten die folgende Ausgabe:

+--------------+-------------------------------------+
| emp_name                       | DATE_FORMAT(hire_date, '%M %e, %Y') |
+--------------+-------------------------------------+
| Ethan Hunt   | Mai 1, 2001                         |
| Tony Montana | Juli 15, 2002                       |
| Sarah Connor | Oktober 18, 2005                    |
| Rick Deckard | Januar 3, 2007                     |
| Martin Blank | Juni 24, 2008                       |
+--------------+-------------------------------------+

Wie Sie sehen können, ist das Label des letzten Spalten im Ausgabe sehr lang und umständlich. Wir können das Problem mit Spaltenbezeichnern lösen, wie im Folgenden gezeigt:

-- MySQL Datenbank-Syntax 
SELECT emp_name, DATE_FORMAT(hire_date, '%M %e, %Y') AS hire_date
FROM employees;

Führen Sie den obigen Befehl aus, und Sie erhalten wie folgt eine lesbarere Ausgabe:

+--------------+------------------+
| emp_name     | hire_date        |
+--------------+------------------+
| Ethan Hunt   | Mai 1, 2001      |
| Tony Montana | Juli 15, 2002    |
| Sarah Connor | Oktober 18, 2005 |
| Rick Deckard | Januar 3, 2007  |
| Martin Blank | Juni 24, 2008    |
+--------------+------------------+

Hinweis:Sie können inGROUP BY,ORDER BYoderHAVINGVerwendung von Aliases zur Referenzierung von Spalten im Ausdruck. Allerdings ist es nicht erlaubt inWHEREAliase im Ausdruck verwenden.