31.01.2025

Como corrigir erros comuns de SQL

Quando você digita alguns comandos para executar uma consulta ao banco de dados, espera obter uma resposta, mas... de repente, algo dá errado e, em vez disso, você recebe uma mensagem de erro.

Não precisa se preocupar! Cometer erros ao programar, inclusive ao usar SQL, é completamente normal. Neste artigo, discutiremos os erros comuns que as pessoas costumam encontrar ao escrever código SQL. Exploraremos vários tipos de erros que podem ocorrer ao trabalhar com SQL. Ao final deste artigo, você terá uma melhor compreensão desses erros comuns e poderá evitá-los. É particularmente importante que os iniciantes em SQL estejam cientes desses erros e de como resolvê-los, pois os novatos em codificação geralmente cometem mais erros e gastam mais tempo depurando seu código. O artigo fornecerá mais detalhes sobre os erros comuns de SQL que devem ser observados.

Passos preliminares

Para ilustrar os erros comuns de SQL, criaremos um banco de dados com alguns dados dentro dele. Conecte-se ao seu servidor de banco de dados, crie um banco de dados vazio com o nome testdb e torne esse banco de dados ativo:

mysql -u<username> -p<password>
create database testdb;
use testdb;

Crie duas tabelas no banco de dados:

CREATE TABLE boys (
ID int,
Name varchar(20),
Surname varchar(20),
FavoriteDiscipline varchar(20),
Age int);

CREATE TABLE girls (
ID int,
Name varchar(20),
Surname varchar(20),
FavoriteDiscipline varchar(20),
Age int);

 

Em seguida, preencha essas tabelas:

INSERT into boys (Id,Name,Surname,FavoriteDiscipline,Age)
VALUES
(1,'Vanya','Sidorov','Math',15),
(2,'Petya','Shmelev','Literature',14),
(3,'Seryozha','Petrov','Music',15),
(4,'Fedya','Kurbanov','Geography',15),
(5, 'Vanya','Korolyov','History',15);

 

INSERT into girls (Id,Name,Surname,FavoriteDiscipline,Age)
VALUES
(1,'Olya','Sukhova','History',14),
(2,'Irina','Vlasova','Music',14),
(3,'Vera','Kurbanova','Literature',15);

 

Usaremos esse banco de dados nas próximas etapas. Vamos descrever os erros comuns de SQL!

Digitação incorreta de comandos

Imagine se você dissesse "Nice dukc" em vez de "Nice duck". A pessoa ficaria confusa porque não saberia o que significa "dukc". O mesmo acontece com um banco de dados de computador. Se você disser a ele para encontrar uma "TABEL" em vez de uma "TABLE", ele não saberá o que fazer porque não entende o que significa "TABEL". Um exemplo prático - veja esta frase simples:

SELECT * FORM boys;

Você consegue ver algum erro nela?

Se você quiser ver todas as informações sobre os meninos da classe, precisará escrever este código. Mas se você tentar executá-lo, poderá ver uma mensagem dizendo que há um erro:

 

Há um erro nesta frase. A palavra "FROM" está escrita incorretamente como "FORM". Às vezes, as palavras são escritas incorretamente em partes importantes das instruções do computador, como quando dizemos quais informações queremos selecionar, de onde queremos obtê-las ou quais condições elas precisam atender.

Os erros mais comuns que as pessoas cometem ao escrever SQL geralmente são devido à grafia incorreta das palavras.

Para resolver o problema, você pode usar qualquer editor SQL on-line que o ajude a destacar as palavras corretas, como "SELECT" e "WHERE", mas ele não destacará a palavra incorreta "FORM".

Portanto, se corrigirmos nossa declaração, obteremos:

 

Símbolos de "delimitador" ausentes

Imagine que você esteja procurando informações sobre uma pessoa chamada Fedya. Lembramos que o sobrenome dele pode ser Kurbanov ou Shmelev. Além disso, parece que ele realmente odiava matemática, mas você não tem certeza. Então, vamos executar a consulta:

SELECT *
FROM boys
WHERE Name = 'Fedya' and NOT FavoriteDiscipline = 'Math' and (Surname = Kurbanov or Surname = Shmelev);

E... aparece um erro

 

 

Você sabe o motivo desse erro? Esquecer de fechar os colchetes é um erro comum em SQL que ocorre com frequência. Portanto, quando corrigirmos o comando, a consulta será concluída:

SELECT *
FROM boys
WHERE Name = 'Fedya' and NOT FavoriteDiscipline = 'Math' and (Surname = 'Kurbanov' or Surname = 'Shmelev');

 

O mesmo princípio se aplica a aspas simples (' ') ou aspas duplas (" "). No SQL, é sempre necessário ter um par de aspas. Não há nenhuma situação em que uma aspa (simples ou dupla) deva ser deixada sem seu par correspondente.

Para valores de texto em uma coluna, se houver necessidade de incluir uma aspa dentro do valor (por exemplo, Surname = "O'Henry"), usamos uma combinação de diferentes tipos de aspas ou utilizamos caracteres de escape. No SQL, os caracteres de escape são usados para desativar o significado especial de um caractere e geralmente são colocados antes do caractere que precisa ser escapado, por exemplo, adicionando outra aspa perto dele.

Aliases negligenciados

Quando combinamos informações de tabelas diferentes, às vezes isso pode confundir a máquina porque algumas colunas têm o mesmo nome. Para evitar essa confusão, damos a cada tabela um apelido chamado alias. Isso ajuda o banco de dados a saber quais valores de coluna devem ser exibidos. Nem sempre é necessário usar aliases ao combinar tabelas diferentes, mas isso é necessário ao combinar uma tabela que tenha itens com os mesmos nomes.

Imagine que estamos procurando todos os meninos e meninas que gostam da mesma disciplina. Para fazer isso, podemos usar um código especial chamado join e comparar o conteúdo das duas tabelas. Então, vamos construir a consulta de acordo com as "regras comuns":

SELECT *
FROM girls INNER JOIN boys
ON FavoriteDiscipline;

 

Se você vir as palavras nome de coluna ambíguo na mensagem de erro, isso significa que você precisa dar um apelido à tabela, pois ambas as tabelas, meninos e meninas, têm uma tabela com o nome FavoriteDiscipline. Para corrigir esse erro, basta adicionar aliases de tabela à consulta:

SELECT *
FROM girls INNER JOIN boys
ON boys.FavoriteDiscipline = girls.FavoriteDiscipline;

 

Ordem incorreta das instruções

A ordem das instruções é crucial no SQL. Ao escrever instruções SELECT, é importante seguir uma ordem predefinida de palavras-chave para garantir a execução adequada da instrução. Não há flexibilidade ou espaço para desvios nesse sentido, mas também não há "ciência de foguetes". A ordem correta é "<action>, <place>, <search_filter>, <group_or_sort_options>. Exemplo - encontraremos todos os meninos que se chamam "Vanya" e ordenaremos a saída por sobrenome:

SELECT Name, Surname FROM boys WHERE Name = 'Vanya' ORDER BY Surname;

 

É uma ordem "hardcoded"; se tentarmos trocar as palavras, receberemos um erro:

SELECT Name, Surname FROM boys ORDER BY Surname WHERE Name = 'Vanya' ;

 

Solução:

Não fique triste nem desista! Veja que todas as palavras importantes estão colocadas corretamente e todas as aspas e colchetes estão fechados.

Nomes em maiúsculas e minúsculas

Na maioria dos casos, os comandos SQL não diferenciam maiúsculas de minúsculas, o que significa que a letra maiúscula não afeta sua execução.

 

No entanto, se você criar uma tabela com o mesmo nome, mas com letras maiúsculas e minúsculas diferentes, isso pode levar a mais complicações e possíveis problemas. Para ilustrar, vamos criar uma tabela "vazia" chamada GIRLS:

 

 

Agora, se você alterar acidentalmente o caso do comando, isso pode resultar em uma saída inesperada. Imagine que estamos procurando o sobrenome de uma garota com o nome "Olya". E, se ativarmos o caps lock, receberemos um erro:

 

Solução - evite usar nomes CAPITALIZADOS se for possível.

Esses são os erros típicos que as pessoas costumam cometer ao escrever código SQL. Cometer erros é uma ocorrência comum durante o aprendizado e é uma parte natural do processo de programação. Não se sinta desanimado nem desista. À medida que você adquire mais experiência, é útil abordar seu código de forma organizada, o que lhe permite identificar e corrigir erros com mais eficiência.