English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве вы узнаете, как指定 краткие имена для таблиц и столбцов в 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 | +--------------+------------------+