0Pricing
Coding Interview Prep · Aula

Projetando colunas e armadilhas de alias

Entenda por que não é possível referenciar um alias de SELECT em WHERE e como entrevistadores testam o escopo de aliases.

Projetando colunas e armadilhas de alias é uma aula grátis de Coding Interview Prep no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Coding Interview Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Coding Interview Prep inclui 4 aulas no total.

Projeção: escolhendo suas colunas

Escolher quais colunas uma consulta retorna é chamado de projeção — é isso que você faz sempre que escreve SELECT. Nomeie-as explicitamente no código real; deixe SELECT * para explorações rápidas.

SELECT id, first_name, email
FROM employees;

Por que os entrevistadores não gostam de SELECT *

Por que os entrevistadores não gostam de SELECT * no código da aplicação? Ele é frágil (a ordem das colunas pode mudar), desperdiça largura de banda, prejudica o uso de índices e esconde o que você realmente precisa. Nomeie suas colunas. 👍

Dando um apelido a uma coluna com AS

Um apelido renomeia uma coluna na saída. Use AS para deixar tudo claro — ele é especialmente útil em colunas calculadas, dando a expressões confusas como salário * 12 um cabeçalho limpo e legível.

SELECT first_name AS name,
       salary * 12 AS annual_salary
FROM employees;

Colocando entre aspas apelidos com espaços

Se um apelido tiver espaços ou for uma palavra reservada, você deverá colocá-lo entre aspas. A forma portátil e padrão é usar aspas duplas. Dica: prefira nomes com palavras separadas por sublinhados e não use aspas.

SELECT salary AS "Annual Pay"
FROM employees;

A grande armadilha: escopo do apelido em WHERE

Aqui está a armadilha mais frequente em testes: defina um apelido em SELECT, depois filtre por ele em WHERE, e isso falhará. WHERE é executado antes de SELECT, portanto esse apelido ainda não existe.

-- This raises an error
SELECT salary * 12 AS annual_salary
FROM employees
WHERE annual_salary > 100000;

O motivo: ordem lógica de execução

A solução é conhecer a ordem lógica das cláusulas: FROM, WHERE, GROUP BY, HAVING, SELECT e, depois, ORDER BY. SELECT aparece quase no final, portanto as cláusulas anteriores não conseguem acessar seus apelidos.

Correção 1: repita a expressão

A correção mais portável é simples: basta repetir a expressão em WHERE em vez de usar o apelido. É um pouco mais prolixo, mas funciona em todos os bancos de dados, sempre.

SELECT salary * 12 AS annual_salary
FROM employees
WHERE salary * 12 > 100000;

Correção 2: envolva em uma subconsulta ou CTE

Se repetir uma expressão longa parecer inadequado, calcule-a primeiro em uma subconsulta ou CTE. Nesse ponto, o apelido se torna uma coluna real, e o WHERE externo pode filtrá-la.

SELECT *
FROM (
  SELECT first_name, salary * 12 AS annual_salary
  FROM employees
) t
WHERE annual_salary > 100000;

Onde os apelidos ARE permitidos: ORDER BY

Boas notícias: ORDER BY pode usar um apelido de SELECT, porque é executado depois de SELECT. Portanto, WHERE, GROUP BY e HAVING não conseguem acessar apelidos — mas ORDER BY consegue.

SELECT first_name, salary * 12 AS annual_salary
FROM employees
ORDER BY annual_salary DESC;

Diferenças entre dialetos dignas de menção

Vale mencionar: o MySQL permite de forma flexível apelidos em GROUP BY e HAVING, enquanto o Postgres e o SQL Server seguem o padrão. Raciocine com base na ordem lógica e, depois, observe a exceção.

Apelidos de tabelas versus apelidos de colunas

Não os confunda. Um apelido de tabela encurta o nome de uma tabela e fica visível em todos os lugares, inclusive em WHERE. Um apelido de coluna renomeia a saída e não fica visível — exatamente o oposto.

SELECT e.first_name, e.salary AS pay
FROM employees AS e
WHERE e.salary > 50000;

Verificação rápida

Teste a armadilha principal.

Recapitulação

Recapitulando: prefira colunas explícitas a SELECT * e use apelidos com AS. Um apelido de SELECT fica invisível em WHERE/GROUP BY/HAVING, mas funciona em ORDER BY. Corrija isso repetindo a expressão ou usando uma CTE.

Perguntas Frequentes

A aula “Projetando colunas e armadilhas de alias” é grátis?

Sim — o texto completo de “Projetando colunas e armadilhas de alias” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Coding Interview Prep, atualize para CoddyKit PRO. O curso de Coding Interview Prep inclui 4 aulas no total.

O que vou aprender em “Projetando colunas e armadilhas de alias”?

Entenda por que não é possível referenciar um alias de SELECT em WHERE e como entrevistadores testam o escopo de aliases. Você pratica Coding Interview Prep com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Coding Interview Prep?

Nenhuma experiência prévia é necessária. Coding Interview Prep no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Projetando colunas e armadilhas de alias”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Coding Interview Prep?

Sim. Cada aula de Coding Interview Prep inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Projetando colunas e armadilhas de alias
  2. Colunas calculadas e precedência de expressões
  3. DISTINCT versus GROUP BY para exclusividade
  4. Expressões CASE em SELECT
← Voltar para Coding Interview Prep