O alias SQL é um pequeno recurso interessante do SQL que permite escrever um código mais conciso e criar nomes de colunas quando não existir nenhum nome de coluna.
Existem dois tipos de alias SQL; aliases de coluna e aliases de tabela. Neste artigo, forneço uma visão geral de ambos.
O que é um Alias em SQL?
No SQL, um alias é um recurso que nos permite atribuir temporariamente um nome diferente a uma coluna ou tabela em nossas consultas SQL. Isso nos permite reduzir a quantidade de código em nossas consultas, o que pode ser particularmente benéfico em consultas complexas.
Ele também nos permite fornecer nomes de coluna para aplicativos cliente onde não existe nenhum nome de coluna (por exemplo, ao usar um campo calculado).
Benefícios dos aliases SQL
Alguns dos principais benefícios dos aliases SQL incluem:
- Permite que você forneça nomes mais legíveis aos cabeçalhos das colunas quando eles são apresentados nos resultados
- Permite que aplicativos cliente se refiram a um campo calculado por nome onde não existe nome de coluna
- Permite reduzir o código e tornar suas consultas mais concisas
- Pode ser usado como uma técnica de ofuscação para proteger os nomes das colunas subjacentes de uma consulta
Devo salientar que atribuir um alias não renomeia a coluna ou a tabela. Ele simplesmente fornece um nome alternativo que pode ser usado para se referir a ele.
Sintaxe do alias
Para criar um alias no SQL, basta seguir o nome da coluna ou tabela com o alias escolhido. Opcionalmente, você pode usar o
AS
palavra-chave entre o nome da coluna/tabela e seu alias. Assim para colunas:
SELECT Column1 AS Alias1
...
or
SELECT Column1 Alias1
...
Ou assim para tabelas:
...
FROM Table1 AS Alias1
...
or
...
FROM Table1 Alias1
...
Os exemplos a seguir ilustrarão isso melhor.
O alias da coluna
Provavelmente, o alias mais usado é o alias de coluna. O alias de coluna permite que você forneça um nome temporário para suas colunas.
Ele também permite que você forneça um nome de coluna em locais onde não existe nenhum nome de coluna.
Os dois exemplos a seguir mostram a mesma consulta escrita com e sem aliases de coluna.
Sem alias de coluna
Aqui está uma consulta SQL simples que não usar aliases de coluna.
SELECT
f_name,
l_name
FROM customers;
Resultado:
+----------+----------+ | f_name | l_name | |----------+----------| | Homer | Connery | | Bart | Pitt | | Nancy | Simpson | | Boris | Trump | +----------+----------+
Nesse caso, não forneci nenhum aliase de coluna e, portanto, os nomes reais das colunas subjacentes foram apresentados como cabeçalhos de coluna nos resultados.
Com alias de coluna
Aqui está a mesma consulta, exceto que desta vez eu uso aliases de coluna.
SELECT
f_name AS FirstName,
l_name AS LastName
FROM customers;
Resultado:
+-------------+------------+ | FirstName | LastName | |-------------+------------| | Homer | Connery | | Bart | Pitt | | Nancy | Simpson | | Boris | Trump | +-------------+------------+
Observe que os aliases de coluna foram usados como cabeçalhos de coluna nos resultados.
Aliases de coluna em campos calculados
Os aliases de coluna também podem ser usados em campos calculados onde não existe nenhum nome de coluna. Não me refiro em colunas computadas, onde há um nome de coluna, mas em campos onde o valor é derivado de uma expressão diferente do valor de uma coluna simples.
“Como poderia não haver nome de coluna?” você pode perguntar.
Bem, há muitas ocasiões em que você pode descobrir que não há nenhum nome de coluna sendo retornado em uma consulta. Você já viu
(No column name)
como um cabeçalho de coluna dos resultados da sua consulta? Existem muitas situações em que isso pode ocorrer.
Sem um alias de coluna
Aqui está um exemplo de uma consulta que não retorna um cabeçalho de coluna.
SELECT
f_name + ' ' + l_name
FROM customers;
Resultado:
+--------------------+ | (No column name) | |--------------------| | Homer Connery | | Bart Pitt | | Nancy Simpson | | Boris Trump | +--------------------+
Este exemplo concatena o nome e o sobrenome de cada cliente e apresenta o resultado como uma coluna. O único problema é que o DBMS não sabe como chamar a coluna.
Esta é uma oportunidade perfeita para um alias!
Com um alias de coluna
Aqui está o mesmo exemplo, exceto que agora atribuo um alias de coluna ao resultado.
SELECT
f_name + ' ' + l_name AS FullName
FROM customers;
Resultado:
+---------------+ | FullName | |---------------| | Homer Connery | | Bart Pitt | | Nancy Simpson | | Boris Trump | +---------------+
O bom disso é que qualquer aplicação cliente agora pode pegar esses resultados e se referir ao campo calculado pelo seu alias.
Observe que o exemplo acima usa o operador de concatenação de string do SQL Server (
+
). No DB2, Oracle, PostgreSQL e SQLite, você precisará usar ||
. E no MySQL e MariaDB, use o CONCAT()
função. Embora isso não tenha nada a ver com aliases SQL, pensei em mencionar isso 🙂 Aliases com espaços
Também é possível criar aliases com espaços.
Ao fazer isso, coloque o alias entre aspas duplas. Em alguns DBMSs, você pode usar opcionalmente outros caracteres (como colchetes
[]
no SQL Server). SELECT
f_name + ' ' + l_name AS "Full Name"
FROM customers;
Resultado:
+---------------+ | Full Name | |---------------| | Homer Connery | | Bart Pitt | | Nancy Simpson | | Boris Trump | +---------------+
Tenha em mente que geralmente não é considerado uma boa prática ter espaços em aliases. Espaços podem causar todos os tipos de problemas para aplicativos cliente e, por esse motivo, você geralmente deve evitar incluir espaços em seus aliases de coluna.
Omitindo o AS
Palavra-chave
Como mencionado, o
AS
palavra-chave é opcional. Portanto, poderíamos reescrever qualquer um dos exemplos anteriores sem o AS
palavra-chave. Aqui está um exemplo.
SELECT
f_name FirstName,
l_name LastName
FROM customers;
Resultado:
+-------------+------------+ | FirstName | LastName | |-------------+------------| | Homer | Connery | | Bart | Pitt | | Nancy | Simpson | | Boris | Trump | +-------------+------------+
Embora você possa omitir o
AS
palavra-chave, alguns profissionais de SQL preferem sempre incluí-la, por motivos de legibilidade. Seja qual for a sintaxe que você preferir usar, eu recomendaria mantê-la consistente. Se você optar por omitir o
AS
palavra-chave e omita-a em todos os lugares. Se você optar por incluí-lo, inclua-o em todos os lugares. O alias da tabela
O alias da tabela é semelhante ao alias da coluna, mas, como o nome sugere, o alias da tabela é para tabelas.
O alias da tabela também é conhecido como nome da correlação .
O alias de tabela é frequentemente usado ao realizar junções. Pode ser especialmente útil em consultas complexas, pois pode ajudar a manter o código mais conciso e legível.
Abaixo estão dois exemplos; um sem um alias de tabela e outro com um alias de tabela.
Exemplo sem alias de tabela
Aqui está um exemplo básico de uma consulta que faz uma junção à esquerda entre duas tabelas.
SELECT
PetTypes.PetType,
COUNT(Pets.PetTypeId) AS Count
FROM Pets
LEFT JOIN PetTypes
ON Pets.PetTypeId = PetTypes.PetTypeId
GROUP BY PetTypes.PetType
ORDER BY Count DESC, PetTypes.PetType;
Resultado:
+-----------+---------+ | PetType | Count | |-----------+---------| | Dog | 4 | | Cat | 3 | | Bird | 1 | +-----------+---------+
Observe que soletramos o nome de cada tabela sempre que precisarmos fazer referência a ela.
Exemplo com um alias de tabela
Aqui está o mesmo exemplo, exceto com aliases de tabela.
SELECT
pt.PetType,
COUNT(p.PetTypeId) AS Count
FROM Pets AS p
LEFT JOIN PetTypes AS pt
ON p.PetTypeId = pt.PetTypeId
GROUP BY pt.PetType
ORDER BY Count DESC, pt.PetType;
Resultado:
+-----------+---------+ | PetType | Count | |-----------+---------| | Dog | 4 | | Cat | 3 | | Bird | 1 | +-----------+---------+
Assim como os aliases de coluna, o
AS
palavra-chave é opcional com aliases de tabela. No Oracle, o AS
palavra-chave nem é compatível com aliases de tabela (embora seja compatível com aliases de coluna). Portanto, poderíamos reescrever nosso exemplo para o seguinte.
SELECT
pt.PetType,
COUNT(p.PetTypeId) AS Count
FROM Pets p
LEFT JOIN PetTypes pt
ON p.PetTypeId = pt.PetTypeId
GROUP BY pt.PetType
ORDER BY Count DESC, pt.PetType;
Resultado:
+-----------+---------+ | PetType | Count | |-----------+---------| | Dog | 4 | | Cat | 3 | | Bird | 1 | +-----------+---------+
De qualquer forma, mesmo resultado.