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

SQL Tabela, Alias de Coluna (Aliases)

Neste tutorial, você aprenderá como especificar aliases curtos para tabelas ou colunas em consultas SQL.

Definir alias de tabela

Quando várias tabelas são juntas em uma única consulta, você precisa adicionar o nome da tabela antes do nome da coluna, como employees.dept id, departments.dept id etc., para evitar confusão e erros de coluna nebulosa onde colunas de diferentes tabelas têm nomes idênticos. Mas, se o nome da tabela for longo e aparecer várias vezes na consulta, escrever a consulta se torna uma tarefa difícil e irritante.

Portanto, para economizar tempo e evitar escrever o nome completo da tabela, pode-se fornecer um alias curto para cada tabela e usar esse alias na consulta para referenciar suas colunas.

Para entender isso claramente, vamos olhar para a seguiremployeesedepartmentsTabela.

+--------+--------------+------------+---------+
| 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            |
+---------+------------------+
Tabela: employees
Tabela: departments

A seguir está uma consulta, que conecta as tabelas de funcionários e departamentos usando o campo de id de dept público, para recuperar o id, o nome e o nome do departamento dos funcionários.

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列中的日期以生成自定义输出:

-- Sintaxe do banco de dados MySQL 
SELECT emp_name, DATE_FORMAT(hire_date, '%M %e, %Y') FROM employees;

如果执行上面的语句,您将获得如下输出:

+--------------+-------------------------------------+
| emp_name     | DATE_FORMAT(hire_date, '%M %e, %Y') |
+--------------+-------------------------------------+
| Ethan Hunt  | Maio 1, 2001                         |
| Tony Montana | Julho 15, 2002                       |
| Sarah Connor | Outubro 18, 2005                    |
| Rick Deckard | Janeiro 3, 2007                     |
| Martin Blank | Junho 24, 2008                       |
+--------------+-------------------------------------+

Como você vê, a etiqueta da última coluna da saída é longa e engessada. Podemos usar nomes de coluna alternativos para resolver esse problema, conforme mostrado a seguir:

-- Sintaxe do banco de dados MySQL 
SELECT emp_name, DATE_FORMAT(hire_date, '%M %e, %Y') AS hire_date
FROM employees;

Se executar a sentença acima, você obterá uma saída mais legível, conforme mostrado a seguir:

+--------------+------------------+
| emp_name  | hire_date  |
+--------------+------------------+
| Ethan Hunt  | Maio 1, 2001      |
| Tony Montana | Julho 15, 2002    |
| Sarah Connor | Outubro 18, 2005 |
| Rick Deckard | Janeiro 3, 2007  |
| Martin Blank | Junho 24, 2008    |
+--------------+------------------+

Atenção:Você pode usarGROUP BY,ORDER BYouHAVINGUsar alias para referenciar colunas na frase.WHEREUsar alias em frases.