CodeGym /Cursos /SQL SELF /Erros comuns ao usar SELECT

Erros comuns ao usar SELECT

SQL SELF
Nível 3, Lição 3
Disponível

Assim como em qualquer área da programação, trabalhar com SELECT inevitavelmente leva a erros. Até os devs mais experientes às vezes deixam passar bugs nas queries SQL. Hoje vamos analisar os erros típicos ao usar SELECT, por que eles acontecem e como evitar cair nessas ciladas.

SQL é uma linguagem que segue as regras de sintaxe à risca. Esqueceu ou colocou uma vírgula a mais, pulou um operador ou trocou a ordem das palavras — e o banco já levanta a "bandeira vermelha".

Palavras-chave esquecidas

O erro mais comum é simplesmente esquecer uma das palavras-chave obrigatórias. Por exemplo, tenta rodar esse comando aqui:

SELECT nome idade FROM estudantes;

Tá faltando alguma coisa, né? Aqui faltou a palavra-chave , entre os campos nome e idade. Bora corrigir:

SELECT nome, idade FROM estudantes;

O motivo desse tipo de erro é claro: ou você tá começando a escrever queries agora, ou tá com pressa. SQL não curte pressa!

Erros nos nomes das colunas e tabelas

Os comandos SQL são sensíveis aos nomes corretos das colunas e tabelas. Olha esse exemplo:

SELECT noem, idadde FROM estudants;

O banco olha pra isso e pensa: "que viagem é essa?": as colunas noem e idadde, assim como a tabela estudants, simplesmente não existem. Corrigindo:

SELECT nome, idade FROM estudantes;

Dica: Se não tiver certeza dos nomes, usa o comando \d nome_da_tabela no psql ou o interface do pgAdmin pra conferir a estrutura da tabela.

Aspas esquecidas

Nomes de colunas e tabelas que têm espaço ou outros caracteres especiais precisam estar entre aspas duplas. Exemplo:

SELECT "primeiro nome", idade FROM estudantes;

Se esquecer as aspas, o SQL não vai entender o que você quis dizer e vai dar erro.

Erros lógicos: quando tudo roda, mas não do jeito que você queria

Às vezes as queries rodam de boa, mas o resultado sai "estranho". Isso são erros lógicos. Eles são mais traiçoeiros porque o banco não vai te avisar que algo deu ruim.

  1. Uso errado dos operadores de comparação. Imagina que você quer pegar todos os estudantes com mais de 18 anos:
SELECT * FROM estudantes WHERE idade > 18;

Agora tenta uma query com outro operador:

SELECT * FROM estudantes WHERE idade = 18;

Essa query vai trazer só quem tem exatamente 18 anos. Se você queria pegar todo mundo com mais de 18, isso é um erro lógico.

Dica: Fica ligado nesses detalhes. Se tiver dúvida, começa com seleções pequenas (tipo usando LIMIT).

Erros ao combinar condições

Olha esse exemplo:

SELECT * FROM estudantes WHERE idade > 18 OR nota = 'A' AND cidade = 'Nova York';

Essa query pode acabar trazendo estudantes que nem moram em Nova York. Por quê? Porque a ordem dos operadores lógicos é assim: o SQL processa AND antes do OR. Bora reescrever com parênteses:

SELECT * FROM estudantes WHERE (idade > 18 OR nota = 'A') AND cidade = 'Nova York';

Agora sim, tá certo.

Falta de filtragem

Às vezes uma query tipo SELECT * FROM estudantes; devolve um monte de dados, mas você queria só estudantes de uma cidade específica. Solução? Adiciona filtros usando WHERE:

SELECT * FROM estudantes WHERE cidade = 'Nova York';

Problemas de performance

Quando as queries lidam com muitos dados, otimizar elas vira questão de sobrevivência. Bora ver os erros clássicos que detonam a performance.

Queries tipo SELECT * são práticas durante o desenvolvimento, mas na vida real elas detonam a performance. Se você só precisa de algumas colunas — especifica elas.

-- Ruim:
SELECT * FROM estudantes;

-- Bom:
SELECT nome, idade FROM estudantes;

Por que isso importa? SELECT * puxa todas as colunas, mesmo as que você nem vai usar. Isso aumenta o volume de dados trafegando.

Dicas práticas: como evitar erros

Dá pra deixar as queries SQL mais confiáveis seguindo umas dicas:

  • Confere a sintaxe antes de rodar: usa IDE ou as dicas do pgAdmin, que já mostram os erros antes.
  • Começa com seleções pequenas. Coloca LIMIT 5 ou LIMIT 10 pra testar.
  • Usa comentários pra lembrar o que a query faz:
    -- Pegar todos os estudantes com mais de 18 anos
    SELECT nome, idade FROM estudantes WHERE idade > 18;
    
  • Testa com dados diferentes pra garantir que a lógica tá certa.
  • Não abusa do SELECT *, principalmente em tabelas grandes.

Pegadinhas em entrevistas

Uma das tarefas clássicas em entrevistas de SQL é achar erros numa query. Tipo assim:

SELECT nome FROM funcionarios WHERE salario > 50000 ORDER BY departamento;

Pensa: essa query faz sentido lógico? Se tá usando ORDER BY, provavelmente a ordenação deveria ser pelo salário:

SELECT nome FROM funcionarios WHERE salario > 50000 ORDER BY salario DESC;

Trabalhar com SELECT é a base do SQL, e errar faz parte do começo. Mas com o tempo você vai escrever queries tão fácil quanto manda mensagem no zap, porque dev de verdade treina não só com gatos, mas também com bancos de dados. 😉

2
Tarefa
SQL SELF, nível 3, lição 3
Bloqueado
Correção de erro de sintaxe
Correção de erro de sintaxe
2
Tarefa
SQL SELF, nível 3, lição 3
Bloqueado
Erro lógico em consulta com filtragem e ordenação
Erro lógico em consulta com filtragem e ordenação
1
Pesquisa/teste
Ordenação de dados, nível 3, lição 3
Indisponível
Ordenação de dados
Ordenação de dados
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION