Resumo : neste tutorial, você aprenderá como usar aliases MySQL para atribuir nomes temporários a colunas ou tabelas em uma consulta.
O MySQL suporta dois tipos de aliases: aliases de coluna e aliases de tabela.
Aliases de coluna
No MySQL, você usa aliases de coluna para atribuir um nome temporário a uma coluna no conjunto de resultados da consulta.
Por exemplo, os nomes das colunas às vezes são tão técnicos que tornam a saída da consulta muito difícil de entender. Para dar um nome descritivo a uma coluna, você pode usar um alias de coluna.
A instrução a seguir ilustra como usar o alias da coluna:
SELECT
[column_1 | expression] AS descriptive_name
FROM table_name;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Para atribuir um alias a uma coluna, você usa a AS
palavra-chave seguida pelo alias. Se o alias contiver espaços, você deverá colocá-lo entre aspas da seguinte forma:
SELECT
[column_1 | expression] AS `descriptive name`
FROM
table_name;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Como a AS
palavra-chave é opcional, você pode omiti-la na instrução. Observe que você também pode atribuir um alias a uma expressão.
Vejamos a employees
tabela no banco de dados de exemplo.
A consulta a seguir seleciona os nomes e sobrenomes dos funcionários. Ele usa a CONCAT_WS()
função para concatenar nome e sobrenome em nome completo:
SELECT
CONCAT_WS(', ', lastName, firstname)
FROM
employees;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
O título da coluna pode ser difícil de ler. Para resolver esse problema, você pode atribuir um alias de coluna à coluna de saída, conforme mostrado na consulta a seguir:
SELECT
CONCAT_WS(', ', lastName, firstname) AS `Full name`
FROM
employees;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
No MySQL, você pode usar o alias da coluna nas cláusulas ORDER BY
e para fazer referência à coluna.GROUP BY
HAVING
A consulta a seguir usa o alias da coluna na ORDER BY
cláusula para classificar alfabeticamente os nomes completos dos funcionários:
SELECT
CONCAT_WS(', ', lastName, firstname) `Full name`
FROM
employees
ORDER BY
`Full name`;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A instrução a seguir seleciona pedidos cujo valor total é superior a 60.000. Ela usa aliases de coluna nas cláusulas GROUP BY
e HAVING
.
SELECT
orderNumber `Order no.`,
SUM(priceEach * quantityOrdered) Total
FROM
orderdetails
GROUP BY
`Order no.`
HAVING
total > 60000;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Observe que você não pode usar um alias de coluna na WHERE
cláusula. A razão é que quando o MySQL avalia a WHERE
cláusula, os valores das colunas especificadas na cláusula SELECT ainda não foram avaliados.
Aliases de tabela
Semelhante aos aliases de coluna, você pode atribuir um nome temporário a uma tabela em uma consulta usando um alias de tabela.
Aqui está a sintaxe básica do alias da tabela:
table_name AS table_alias
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe, a AS
palavra-chave é opcional, portanto você pode optar por omiti-la.
Esta consulta mostra como atribuir um alias e à employees
tabela:
SELECT * FROM employees e;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Depois de atribuir um alias a uma tabela, você pode fazer referência a uma coluna da tabela usando o alias da tabela como este:
table_alias.column_name
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Por exemplo:
SELECT
e.firstName,
e.lastName
FROM
employees e
ORDER BY e.firstName;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Na prática, você costuma usar aliases de tabela em instruções que contêm cláusulas INNER JOIN
, LEFT JOIN
, RIGHT JOIN
ou em subconsultas .
Veja as tabelas customers
e orders
do banco de dados de exemplo :
Ambas as tabelas customers
têm orders
o mesmo nome de coluna: customerNumber
.
Se você fizer referência à customerNumber
coluna em uma consulta, receberá uma mensagem de erro:
Error Code: 1052. Column 'customerNumber' in on clause is ambiguous
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Para evitar esse erro, use um alias de tabela para qualificar a customerNumber
coluna:
SELECT
customerName,
COUNT(o.orderNumber) total
FROM
customers c
INNER JOIN orders o ON c.customerNumber = o.customerNumber
GROUP BY
customerName
ORDER BY
total DESC;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A consulta acima seleciona o nome do cliente e o número de pedidos das tabelas customers
e orders
.
Ele é usado c
como alias de tabela para a customers
tabela e o
como alias de tabela para a orders
tabela. As colunas nas tabelas customers
e orders
são referenciadas por meio dos aliases da tabela.
Se você não usar o alias na consulta acima, terá que usar o nome da tabela para se referir às suas colunas, o que torna a consulta mais detalhada:
SELECT
customers.customerName,
COUNT(orders.orderNumber) total
FROM
customers
INNER JOIN orders ON customers.customerNumber = orders.customerNumber
GROUP BY
customerName
ORDER BY
total DESC
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Resumo
- Use aliases do MySQL para atribuir um nome temporário a uma coluna ou tabela.
- Use um alias de coluna para atribuir um nome temporário a uma coluna em uma consulta.
- Use um alias de tabela para atribuir um nome temporário a uma tabela em uma consulta.