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

SQL Таблицы, столбцы alias (aliases)

В этом руководстве вы узнаете, как指定 краткие имена для таблиц и столбцов в SQL-запросах.

Определение别名 таблицы

Когда несколько таблиц включены в один запрос, вам нужно добавить имя таблицы перед каждым именем столбца, например, employees.dept id, departments.dept id и т.д., чтобы избежать путаницы и ошибок, когда в разных таблицах есть столбцы с одинаковыми именами. Однако, если имя таблицы很长 и часто встречается в запросе, то написание запроса становится трудоемким и раздражающим заданием.

Таким образом, чтобы сэкономить время и избежать написания полного имени таблицы, можно предоставить каждой таблице краткое имя и использовать это имя в запросе для обращения к столбцам.

Чтобы清楚理解这一点, давайте рассмотрим нижеemployeesиdepartmentsТаблица。

+--------+--------------+------------+---------+
| 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, чтобы извлечь идентификатор сотрудника, его имя и имя его отдела.

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;

Это сжатая версия запроса, который использовал таблицы с别名:

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;

Если выполнить любую из этих команд, будет получен одинаковый результат, как показано ниже:

+--------+-----------------+--------------------+
| 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               |
+--------+-----------------+--------------------+

Как вы видите, использование алиасов таблицы может сэкономить много времени на ввод.

Смотрите “ SQL JOINSЧасть, чтобы узнать больше о слиянии таблиц.

Определение алиаса столбца таблицы

В MySQL, когда вы используете SQL функции для создания пользовательского вывода, имя столбца может быть трудно понять или трудно понять. В этом случае вы можете использовать别名 для временного命名 столбца вывода.

Рассмотрим следующий запрос, в котором мы используем выражение для форматирования даты в столбце hire_date для создания пользовательского вывода:

-- Синтаксис MySQL базы данных 
SELECT emp_name, DATE_FORMAT(hire_date, '%M %e, %Y') FROM employees;

Если выполнить上面的 команду, вы получите следующий вывод:

+--------------+-------------------------------------+
| emp_name     | DATE_FORMAT(hire_date, '%M %e, %Y') |
+--------------+-------------------------------------+
| Ethan Hunt   | May 1, 2001                       |
| Tony Montana | July 15, 2002                     |
| Sarah Connor | October 18, 2005                  |
| Rick Deckard | January 3, 2007                   |
| Martin Blank | June 24, 2008                       |
+--------------+-------------------------------------+

Как вы видите, последний столбец вывода очень длинный и громоздкий. Мы можем решить эту проблему с помощью别名 столбца, как показано ниже:

-- Синтаксис MySQL базы данных 
SELECT emp_name, DATE_FORMAT(hire_date, '%M %e, %Y') AS hire_date
FROM employees;

Если выполнить上面的 команду, вы получите более читаемый вывод, как показано ниже:

+--------------+------------------+
| emp_name     | hire_date        |
+--------------+------------------+
| Ethan Hunt   | May 1, 2001      |
| Tony Montana | July 15, 2002    |
| Sarah Connor | October 18, 2005 |
| Rick Deckard | January 3, 2007  |
| Martin Blank | June 24, 2008    |
+--------------+------------------+

Примечание:Вы можете вGROUP BY,ORDER BYилиHAVINGИспользование псевдонимов для ссылки на столбцы в предложениях. Но не разрешается вWHEREИспользование псевдонимов в предложениях.