Voltar para a lista de artigos Artigos
10 minutos de leitura

Erros de SQL para iniciantes que podem lhe custar tempo

Como analista de dados júnior, aprender SQL pode ser gratificante e desafiador. Ele permite que você compreenda os dados e extraia insights valiosos, mas os erros comuns de SQL geralmente se tornam barreiras frustrantes. Neste guia, compilei os erros mais frequentes de SQL para iniciantes e como evitá-los, para ajudá-lo a economizar tempo e aprimorar suas habilidades com mais eficiência.

No início, aprender SQL era muitas vezes frustrante devido a pequenos erros que levavam horas para serem depurados. Simples descuidos, como a falta de uma vírgula ou um alias mal colocado, podiam inviabilizar completamente uma análise inteira e me deixar desanimado. No entanto, esses desafios acabaram se revelando lições valiosas, ensinando-me a importância da precisão e como escrever um código SQL mais limpo e eficaz. Você pode ler minha história neste artigo.

Enfrentei as mesmas dificuldades pelas quais muitos de vocês estão passando. Este guia está aqui para ajudá-lo a evitar erros comuns, mas, mais importante, trata-se de aprender com esses erros e criar confiança real em suas habilidades de SQL.

1. Esquecer as vírgulas nas listas SELECT

Esquecer de separar os nomes das colunas com vírgulas em uma instrução SELECT é um erro frequente que leva a erros de sintaxe. Esse erro ocorre porque o SQL espera que cada coluna seja claramente definida e a falta de vírgulas causa confusão para o analisador.

Exemplo:

SELECT first_name last_name FROM employees;

Erro: Falta de vírgula entre first_name e last_name. O SQL interpretará first_name last_name como first_name AS last_name, resultando em uma atribuição de alias não intencional. Supondo que você precise de first_name e last_name nos resultados, isso causará um problema, pois somente first_name com um alias será recuperado.

Solução: Sempre verifique novamente suas declarações SELECT para garantir que todos os nomes de coluna estejam separados por vírgulas. Não tenha pressa ao escrever uma consulta e considere lê-la em voz alta ou dividi-la para ver se cada elemento está separado corretamente. Além disso, revise o resultado da consulta para confirmar que todas as colunas que você pretendia recuperar estão presentes.

Exemplo corrigido:

SELECT first_name, last_name FROM employees;

Leia mais sobre as declarações SELECT neste artigo incrível de Kateryna Koidan: How Do You Write a SELECT Statement in SQL.

2. Deixando de fora as aspas

Ao trabalhar com valores de texto, deixar as aspas de fora pode levar a erros de sintaxe. O SQL exige que os valores de texto sejam colocados entre aspas simples ( ' ) para diferenciá-los dos nomes de colunas ou de outras palavras-chave. Em outras linguagens de programação, as cadeias de caracteres geralmente são colocadas entre aspas duplas ( " ), mas, no SQL, as aspas duplas são usadas para identificadores (por exemplo, nomes de tabelas ou colunas).

Exemplo:

SELECT * FROM employees WHERE department = Sales;

Error: Falta de aspas em Sales. Sem as aspas, o SQL interpreta Sales como um nome de coluna, o que pode levar a um erro se essa coluna não existir.

Solução: Sempre use aspas simples ao redor dos valores de texto em suas consultas. Isso garante que o SQL trate o valor como uma cadeia de caracteres, não como uma coluna ou palavra-chave.

Exemplo corrigido:

SELECT * FROM employees WHERE department = 'Sales';

Outro exemplo:

SELECT * FROM employees WHERE department = "Sales";

Erro: O uso de aspas duplas em vez de aspas simples faz com que o SQL interprete "Sales" como um identificador, o que pode levar a um erro se não houver nenhuma coluna ou tabela chamada Sales.

Solução: Sempre use aspas simples ao redor dos valores de texto em suas consultas. Isso garante que o SQL trate o valor como uma cadeia de caracteres, não como uma coluna ou palavra-chave.

3. Digitação incorreta de nomes de tabelas e colunas

A digitação incorreta de nomes de tabelas ou colunas é um erro comum de sintaxe. O SQL não perdoa quando se trata de erros de digitação - se o nome da tabela ou da coluna não corresponder exatamente, isso resultará em um erro ou em resultados incorretos.

Exemplo:

SELECT first_nam FROM employees;

Erro: Erro de digitação first_name.

Solução: Sempre verifique novamente os nomes das tabelas e colunas antes de executar as consultas. O uso de um IDE ou editor SQL que complete automaticamente os nomes pode ajudar a reduzir esses tipos de erros. Você também pode consultar o esquema do banco de dados com frequência para verificar os nomes corretos.

Exemplo corrigido:

SELECT first_name FROM employees;

4. Problemas de formatação: Mantenha seu código limpo

A formatação ruim da consulta dificulta a leitura e a depuração do código. Isso é particularmente problemático quando as consultas se tornam complexas, envolvendo várias tabelas ou condições. O código limpo é essencial para a colaboração e a solução de problemas eficientes.

Exemplo:

SELECT first_name,last_name,department FROM employees WHERE department='Sales' AND salary>50000;

Erro: Difícil de ler e depurar.

Solução: Formate suas consultas com recuo e quebras de linha. Isso ajuda a dividir cláusulas diferentes, tornando o código mais fácil de entender em um relance. A formatação adequada também facilita a detecção de erros.

Exemplo formatado:

SELECT first_name, last_name, department
FROM employees
WHERE department = 'Sales'
  AND salary > 50000;

Quer escrever um bom código SQL? Leia 20 exemplos de consultas SQL básicas para iniciantes, de Tihomir Babic.

5. Ordenação incorreta de declarações

O SQL exige uma ordem específica para suas cláusulas, como SELECT, FROM, WHERE e ORDER BY. Se a ordem estiver incorreta, o SQL gerará um erro de sintaxe ou se comportará de forma inesperada. Esse é um problema comum para iniciantes, que ainda não estão familiarizados com a estrutura das instruções SQL.

Exemplo:

FROM employees SELECT first_name, last_name;

Erro: Ordem incorreta de FROM e SELECT.

Solução: Familiarize-se com a ordem correta das cláusulas SQL: SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY. Pratique escrever consultas nessa sequência até que ela se torne natural.

Exemplo corrigido:

SELECT first_name, last_name FROM employees;

Mais informações sobre isso no artigo SQL Order of Operations, de Ignacio L. Bisso.

6. Uso inadequado de aliases

Os aliases são úteis para encurtar nomes longos de tabelas, mas usá-los incorretamente pode resultar em consultas confusas e ilegíveis. Os aliases devem tornar as consultas mais fáceis de entender, não mais difíceis.

Exemplo:

SELECT a.first_name, a.last_name FROM employees a;

Problema: O alias a não é descritivo, tornando a consulta mais difícil de entender.

Solução: Use aliases significativos que transmitam claramente o que a tabela representa. Por exemplo, use emp para employees para manter a clareza.

Exemplo corrigido:

SELECT emp.first_name, emp.last_name FROM employees emp;

Mais recursos sobre aliases em SQL:

7. Erros de sintaxe

Erros de sintaxe, como esquecer de fechar parênteses ou o uso incorreto de vírgulas, são comuns entre os iniciantes. Esses erros podem fazer com que uma consulta não seja executada ou levar a resultados inesperados.

Exemplo:

SELECT COUNT(* FROM employees;

Erro: Falta de parênteses de fechamento após *. Funções SQL como COUNT() exigem parênteses de abertura e fechamento.

Solução: Use um IDE que destaque os problemas de sintaxe à medida que você digita. Isso o ajudará a identificar antecipadamente os parênteses ausentes ou as vírgulas mal colocadas. Sempre revise suas consultas antes da execução.

Exemplo corrigido:

SELECT COUNT(*) FROM employees;

Outro exemplo

SELECT * FROM employees WHERE department = 'Sales;

Erro: Falta de aspas simples de fechamento após Sales. Isso faz com que o SQL interprete o restante da consulta como parte da cadeia de caracteres.

Solução: Sempre use pares correspondentes de aspas simples para literais de cadeia de caracteres.

Exemplo corrigido:

SELECT * FROM employees WHERE department = 'Sales';

Terceiro exemplo

SELECT name, order FROM orders;

Erro: order é uma palavra-chave reservada no SQL e não pode ser usada como nome de coluna sem o devido tratamento.

Solução: Se você precisar usar uma palavra-chave reservada como nome de coluna, coloque-a entre aspas duplas ("order") ou colchetes ([order]), dependendo do seu dialeto SQL. No entanto, é melhor evitar o uso de palavras reservadas como identificadores.

Consulta corrigida:

SELECT name, "order" FROM orders;

8. Lógica de união: Entendendo o básico

As uniões incorretas geralmente resultam de uma compreensão errônea de como os diferentes tipos de união funcionam ou da colocação incorreta das condições de filtragem. Isso pode levar a resultados incorretos, dados ausentes ou conjuntos de dados inchados.

Exemplo:

SELECT * FROM orders JOIN customers;

Erro: Faltando a condição ON para a união. Sem uma condição de união, o SQL não sabe como fazer a correspondência entre as linhas das duas tabelas.

Solução: Sempre especifique uma condição de união usando a cláusula ON. Entenda a diferença entre INNER JOIN, LEFT JOIN, RIGHT JOIN, e FULL JOIN, e use-as conforme necessário.

Exemplo corrigido:

SELECT * FROM orders
JOIN customers ON orders.customer_id = customers.customer_id;

Quer ser fluente em Cláusulas JOIN em SQL? Confira meu Guia completo para Cláusulas JOIN em SQL. Esse artigo aborda tudo o que você precisa saber sobre o uso de dados em sua consulta de mais de uma tabela.

9. Manuseio incorreto de valores NULL

Os valores NULL podem ser difíceis de lidar, e presumir que NULL é o mesmo que zero ou uma cadeia de caracteres vazia é um erro comum. Isso pode levar a agregações incorretas ou conclusões enganosas.

Exemplo:

SELECT * FROM employees WHERE department != NULL;

Erro: NULL não pode ser comparado usando operadores de comparação padrão.

Solução: Use funções como IS NULL ou IS NOT NULL para tratar corretamente os valores de NULL. Além disso, use COALESCE() para substituir NULL por um valor padrão quando necessário.

Exemplo corrigido:

SELECT * FROM employees WHERE department IS NOT NULL;

Mais informações sobre NULLs:

10. Pressupondo a integridade dos dados

Presumir que os dados estão limpos sem validação é arriscado. Os dados podem conter duplicatas, valores NULL ou formatos incorretos, o que leva a resultados de consulta incorretos.

Exemplo:

SELECT * FROM orders WHERE order_date > '2024-01-01';

Problema: Supondo que todas as datas de pedidos estejam no formato correto e que nenhuma seja NULL. Se order_date for do tipo DATE, o banco de dados garantirá que os valores sejam datas válidas, mas ainda poderá haver valores NULL ou casos extremos inesperados.

Solução: Valide os dados antes da análise. Verifique se há valores NULL, duplicatas e se o formato é consistente. Use verificações ou restrições para garantir a qualidade dos dados.

Exemplo de validação:

SELECT * FROM orders WHERE order_date IS NOT NULL AND order_date > '2024-01-01';

Evitando esses erros Para maior eficiência

Cometer erros é uma parte natural do aprendizado, mas entender e evitar as armadilhas comuns do SQL o ajudará a se tornar um analista de dados mais eficiente. Escrever consultas legíveis, usar nomenclatura consistente, compreender junções e valores de NULL, validar dados e estar atento à sintaxe pode evitar horas de frustração e retrabalho.

Ter os recursos certos pode fazer uma diferença significativa em seu progresso. O curso SQL de A a Z em LearnSQL.com.br foi criado para fornecer essa orientação. Esse curso inclui tudo o que você precisa, desde conceitos fundamentais até técnicas avançadas de SQL, com exemplos práticos e exercícios que tornam o aprendizado prático e envolvente.

Erros de SQL para iniciantes

Além disso, agora você pode experimentá-lo sem nenhum risco. Basta criar uma conta gratuita e usar a avaliação gratuita para conferir os primeiros exercícios. Veja como nossa plataforma funciona e se ela é adequada para você, sem gastar um centavo.

Inscreva-se agora e comece a aprender SQL hoje mesmo!