Voltar para a lista de artigos Artigos
8 minutos de leitura

Como usar pseudônimos com SQL JOINs

Alias SQL são nomes personalizados que você pode dar às colunas e tabelas que você inclui em suas consultas. Os pseudônimos são muito úteis, pois podem melhorar muito a legibilidade e a capacidade de manutenção de sua consulta. Vamos analisar mais de perto o uso de apelidos SQL com o JOIN e por que você pode precisar fazer isso.

Há vários tipos de apelidos que você pode usar em SQL:

  1. Aliases para tabelas.
  2. Aliases para colunas de tabelas.
  3. Aliases para subconsultas.

Embora existam várias maneiras diferentes de usar aliases em suas consultas, a sintaxe é semelhante para todos esses métodos. Vejamos a sintaxe dos pseudônimos.

Sintaxe do alias SQL

A sintaxe mostrada abaixo abrange tanto os pseudônimos de coluna como de tabela:

SELECT
  t1.column_name (AS) new_column_name,
  t2.column_name (AS) other_new_column_name,
  ...
FROM table1 (AS) t1
JOIN table2 (AS) t2
  ON t1.column_name = t2.column_name
…

Se você se sentir sobrecarregado por esta sintaxe, considere a possibilidade de aprender o básico das consultas SQL inscrevendo-se neste curso SQL para Iniciantes . Ele lhe fornecerá uma base sólida e lhe permitirá ler, escrever e compreender as consultas SQL com facilidade.

Aliases da coluna SQL

Primeiro, vejamos os pseudônimos da coluna:

 t1.column_name (AS) new_column_name,
 t2.column_name (AS) other_new_column_name

A palavra-chave AS aqui é opcional. Você pode incluí-la se quiser, mas a consulta se comportará exatamente da mesma forma, independentemente disso.

O alias é definido diretamente após o nome da coluna (ou a palavra-chave AS ). Neste caso, nossos pseudônimos são new_column_name e other_new_column_name.

Se você quiser incluir espaços no nome de sua nova coluna, coloque-a entre aspas. Poderíamos atualizar este exemplo para:

SELECT t1.column_name (AS) 'new column name'

Excluir aqui as aspas simples causaria um erro.

Ok, isso cobre os apelidos SQL para nomes de colunas. Vejamos os pseudônimos das tabelas.

Aliases de tabela SQL

Definimos pseudônimos de tabela dessa forma:

FROM table1 (AS) t1
JOIN table2 (AS) t2

Como antes, a inclusão da palavra-chave AS é completamente opcional. Nós declaramos o pseudônimo para table1 para ser t1. Da mesma forma, o pseudônimo de table2 é t2.

Quando você renomeia tabelas de banco de dados, você deve usar os pseudônimos da tabela nacondição ON, no SELECT lista ao selecionar as colunas (se houver necessidade de especificar a tabela para a coluna), e em outras partes da consulta.

Você pode ver que seguimos esta regra ao incluir t1 e t2 em nossa cláusula SELECT:

SELECT
  t1.column_name (AS) new_column_name,
  t2.column_name (AS) other_new_column_name,
  ... 

Alias SQL para Subconsultas

Uma subconsulta SQL é uma consulta dentro de outra consulta. Vejamos a sintaxe de como usar pseudônimos em uma subconsulta.

SELECT column_1, 
       column_2 = (SELECT COUNT(t2.id)
                         FROM table_2 t2
                        WHERE t2.id = t1.id)
  FROM table_1 t1

A subconsulta é a parte da consulta em tipo negrito. Você pode ver como os aliases nos ajudam a acessar a tabela correta em cada parte da consulta.

Isto conclui nosso olhar sobre a sintaxe do alias SQL. Vamos ver alguns exemplos práticos de uso de apelidos com JOIN!

Exemplos de uso de alias SQL com JOIN

Nesta seção, analisaremos alguns casos comuns de uso de pseudônimos e explicaremos como implementar cada um deles. Cláusulas JOIN em SQL são um tópico complicado - eles estão incluídos neste artigo sobre Tópicos SQL que Requerem Prática . Quanto mais exposição a exemplos práticos você tiver, melhor será a sua situação.

Usando um pseudônimo com nomes de colunas não exclusivas

Quando se lida com várias tabelas, é comum ter o mesmo nome de coluna em ambas as tabelas. Isto ocorre freqüentemente com a coluna id. Aqui está um exemplo que demonstra isto:

SELECT employee.id, customer.id, employee_name, employee_department 
FROM employees 
INNER JOIN customer 
ON employee.id = customer.employee_id 

Os dados resultantes são exibidos como:

ididemployee_nameemployee_department
1214John JacobsHuman Resources

Este resultado confundirá as partes interessadas, pois elas não têm como dizer qual id pertence a qual tabela. A introdução de um apelido de coluna para cada coluna de id pode ajudar:

SELECT employee.id employee_id, customer.id customer_id, employee_name, employee_department 
FROM employees 
INNER JOIN customer 
ON employee.id = customer.employee_id 

Agora obtemos um resultado muito mais compreensível:

employee_idcustomer_idemployee_nameemployee_department
1214John JacobsHuman Resources

Melhorar a legibilidade da consulta

Um pseudônimo pode simplificar e melhorar a legibilidade de sua consulta. Por exemplo, imagine que houvesse uma coluna chamada cn_index que armazenava os nomes dos clientes. Não é imediatamente óbvio o que esta coluna representa; você precisaria da documentação do modelo de dados ou de alguém que o explicasse para decifrar seu significado. Este problema pode ser reduzido usando um pseudônimo em qualquer consulta que inclua esta coluna. Isto pode ser parecido:

SELECT cn_index AS customer_id 
FROM customers

O mesmo se aplica a qualquer tabela mal nomeada que você encontre em seu banco de dados.

Melhorar a manutenção da consulta

Um pseudônimo também ajuda na capacidade de manutenção. Imagine que você tivesse uma pergunta como a que está abaixo:

SELECT customer.id, customer.name, customer.age, client.id 
FROM customer 
JOIN client 
ON customer.id = client.id

Agora imagine que houve uma mudança em nossa customer tabela, como ser renomeado para customers_europe. Você teria que fazer a mudança em todos os lugares onde esta tabela é referenciada:

SELECT customers_europe.id, customers_europe.name, customers_europe.age, client.id
FROM customers_europe
JOIN client 
ON customers_europe.id = client.id

Isto pode não parecer um grande passo, mas é uma consulta curta e simples. Imagine que você teve que atualizar múltiplos procedimentos e funções armazenadas por causa desta mudança.

Vamos ver como os pseudônimos ajudam nesta questão. Nossa primeira consulta, quando atualizada para usar um pseudônimo, pode parecer assim:

SELECT c.id, c.name, c.age, client.id
FROM customer c
JOIN client
ON c.id = client.id

Agora, quando vamos atualizar nossa tabela, só precisamos fazer a mudança em um único lugar:

SELECT c.id, c.name, c.age, client.id
FROM customers_europe c
JOIN client
ON c.id = client.id

Isto resulta em uma grande economia de tempo se você tiver que atualizar um grande número de consultas, funções e procedimentos armazenados existentes.

Auto-ajustes

Uma auto-afiliação permite que você se una a uma mesa. É útil para consultar dados hierárquicos ou comparar linhas dentro da mesma tabela. Ao se auto-unir a uma tabela, você pode usar um LEFT JOIN ou um INNER JOIN. Ao realizar uma auto-união, é importante usar um alias SQL lógico para cada instância da tabela.

Vejamos como podemos escrever uma pergunta que se unirá a uma tabela. Para nosso exemplo, utilizaremos a seguinte tabela, tbl_employee. Ele mostra todos os funcionários da empresa, a identificação de seu departamento e a identificação de seu gerente:

idemployee_namedepartment_idmanager_id
1Montgomery Burns4NULL
2Waylon Smithers11
3Homer Simpson21
4Carl Carlson51
5Lenny Leonard31
6Frank Grimes23

Digamos que queremos um conjunto de resultados que mostre apenas um funcionário e seu gerente. Como podemos realizar isto? Usando pseudônimos em combinação com uma auto-adesão. Veja o trecho de código abaixo:

SELECT e.employee_name AS 'Employee',
m.employee_name AS 'Manager'
FROM tbl_employee e
LEFT JOIN tbl_employee m
ON m.id = e.manager_id

Note que utilizamos LEFT JOIN como nossa auto-adesão. Quando você estiver juntando tabelas, tenha cuidado com o erro ambíguo da coluna, que pode facilmente ocorrer se você não tiver cuidado. Para evitar este erro, você deve especificar explicitamente o apelido da tabela no nome da coluna (e.employee_name e m.employee_name).

A execução da consulta acima produz o seguinte conjunto de resultados:

EmployeeManager
Montgomery BurnsNULL
Waylon SmithersMontgomery Burns
Homer SimpsonMontgomery Burns
Carl CarlsonMontgomery Burns
Lenny LeonardMontgomery Burns
Frank GrimesHomer Simpson

Aí está nosso resultado desejado! Você pode ver claramente cada funcionário e seu gerente. A maioria dos funcionários se reporta ao Sr. Burns. Entretanto, você pode ver que o gerente de Frank Grimes é Homer Simpson. Observe o valor NULL sob a coluna Gerente para Montgomery Burns. Isto porque Montgomery Burns não tem gerente; ele é o chefe.

Vamos ajustar um pouco a pergunta e usar um INNER JOIN desta vez para nossa auto-afiliação:

SELECT e.employee_name AS 'Employee',
m.employee_name AS 'Manager'
FROM tbl_employee e
INNER JOIN tbl_employee m
ON m.id = e.manager_id
EmployeeManager
Waylon SmithersMontgomery Burns
Homer SimpsonMontgomery Burns
Carl CarlsonMontgomery Burns
Lenny LeonardMontgomery Burns
Frank GrimesHomer Simpson

A única grande diferença é a ausência de Montgomery Burns na coluna Employee. Isto porque o valor manager_id para ele era NULL e INNER JOIN retorna apenas colunas correspondentes; os valores NULL não estão incluídos.

Agora você pode realizar auto-inserção, que são aplicáveis a muitos casos de uso diferentes. Se você quiser ver mais exemplos, confira este excelente guia ilustrado de auto-inserção. A auto-junçao também é apresentada nesta útil folha de consultas SQL JOIN. Marque a página ou faça o download e você sempre terá um guia rápido para os diferentes tipos de auto-juntas.

Criar Resultados Significativos

Quando você utiliza funções agregadas, por padrão o resultado será mostrado em uma coluna sem nome. Um pseudônimo é uma forma perfeita de acrescentar significado aos resultados de suas funções agregadas.

Vejamos um breve exemplo para ver como funciona. Imagine que temos uma tabela chamada payments que contém alguns dados de pagamento:

payment_amountpayment_date
1200.992021-01-18
189.232021-02-15
3002.432021-02-25
33.432021-03-03

Aqui está uma consulta:

SELECT SUM(payment_amount)
FROM payments

A execução desta consulta produz o seguinte resultado:

(No column name)
4,426.08

Não temos idéia do que este resultado representa porque ele não tem nome de coluna. Vamos atualizar nossa consulta com um pseudônimo para tornar os resultados mais significativos.

SELECT SUM(payment_amount) AS 'Sum of payments'
FROM payments

Execute a consulta para ver nossos novos e melhores resultados:

Sum of payments
4,426.08

Estes foram apenas alguns usos do pseudônimo SQL. Para mais exemplos, veja este post no blog sobre como usar alias em SQL.

Explicação sobre o alias SQL JOIN

Cobrimos como um pseudônimo pode ajudar na legibilidade e manutenção de sua consulta SQL, sem mencionar o papel integral que ele desempenha em auto-inserção. Analisamos muitos casos e exemplos diferentes de uso. Para obter uma educação mais completa sobre o tema, confira o curso LearnSQL.com.br Cláusulas JOIN em SQL .

Se você gostaria de aprender mais do que apenas Juntas - talvez você esteja procurando uma educação SQL completa - a SQL de A a Z faixa de aprendizagem seria uma opção melhor para você. Ao completar a faixa de aprendizagem, você possuirá as ferramentas necessárias (incluindo JOINs e pseudônimos) para trabalhar livre e eficientemente com qualquer tipo de dado.