SQL: entenda a diferença entre NULL e valor vazio e como tratar esses campos
4 min4 minutos de leitura
4 min4 minutos de leitura
Considere uma tabela chamada `Alunos`, que possui os campos `nome` e `empresa`. Se você estiver revisando conteúdo técnico ou realizando consultas SQL, pode surgir a dúvida: como encontrar os alunos que não preencheram o campo `empresa`? Uma das soluções é procurar pela string vazia:
Autor(a)
Guilherme Silveira
Co-fundador da Alura. Com mais de 20 anos de ensino de tecnologia, criou mais de 100 cursos. Possui formação em engenharia de software, viés matemático e criativo, além de ser medalhista de ouro em competições nacionais de computação, tendo representado o Brasil nos mundiais. Participante de comunidades open source e de educação em tecnologia, tendo escrito 7 livros. Faz mágica e fala coreano no tempo livre.
Inscreva-se em nossa Newsletter
Fique por dentro de conteúdos, insights e oportunidades do universo tech. Receba novidades e lançamentos direto no seu e-mail.
SELECT nome, empresa FROM Alunos WHERE empresa = '';
> Paulo, > ... > Carlos, > Total: 1000 Alunos
No entanto, sabemos que existem mais de 1000 registros sem o campo `empresa` preenchido. Onde estão esses dados?
SELECT nome, empresa FROM Alunos WHERE empresa ISNULL;
> Guilherme, NULL> ...
> Ana, NULL> Total: 2000 Alunos
Diferença entre NULL e valor vazio em SQL
NULL em SQL representa a ausência de valor, ou seja, o campo não recebeu informação nenhuma, como se fosse indefinido. Já o valor vazio (`''` - string vazia) significa que o campo existe e foi definido como vazio de propósito.
Quando uma tabela é criada sem especificar DEFAULT e NOT NULL, o valor padrão do SQL é NULL. Assim, registros inseridos sem valor para a coluna ficam como NULL. Já os registros onde o usuário editou o perfil mas deixou o campo vazio recebem string vazia (`''`). Isso cria inconsistência nos dados.
É importante ter atenção ao criar tabelas no banco de dados. Frequentemente, assim como em linguagens de programação, campos são definidos sem um valor padrão. O resultado disso?
Algumas pessoas não editaram o perfil, mantendo o valor padrão do banco (`NULL`). Outras editaram, mas deixaram o campo em branco. Por conta disso, em toda consulta será necessário verificar ambas as possibilidades:
SELECT*FROM Alunos WHERE (empresa =''OR empresa ISNULL) AND cadastro >'20150101';
A escolha entre usar NULL ou string vazia depende do significado semântico dos dados. NULL representa 'valor desconhecido ou não fornecido', enquanto string vazia significa 'valor fornecido intencionalmente como vazio'.
Para campos opcionais onde não há distinção semântica necessária, usar `DEFAULT '' NOT NULL` simplifica queries e evita a necessidade de verificar ambas as condições.
Portanto, defina um valor padrão na criação ou alteração da estrutura da tabela para evitar esse problema:
ALTER TABLE Alunos MODIFY COLUMN empresa VARCHAR(200) DEFAULT''NOT NULL;
Assim, todas as consultas precisarão considerar apenas valores vazios para o campo `empresa`, reduzindo significativamente a chance de erros.
Observação sobre performance:
Em MySQL, colunas NOT NULL podem ter melhor performance em índices e agregações. Porém, esteja ciente de que esta solução funciona melhor quando não há distinção semântica entre 'não fornecido' e 'vazio'.
Se seu domínio precisa diferenciar entre 'usuário não preencheu' (NULL) versus 'usuário apagou o conteúdo' (string vazia), você deve manter a coluna como nullable e tratar ambos os casos nas queries usando: `WHERE empresa IS NULL OR empresa = ''"`
Boas práticas para revisão de conteúdo técnico em SQL
Sempre defina claramente se o campo pode aceitar NULL ou não;
Documente as regras de preenchimento dos campos ao revisar tabelas e sistemas;
Considere padronizar o tratamento de campos vazios conforme a regra de negócio.
Como aprender mais sobre SQL
No cenário atual, dados inconsistentes não são só um detalhe técnico, eles impactam diretamente análises, decisões e resultados de negócio.
Empresas precisam de profissionais que não apenas escrevem queries, mas entendem a estrutura dos dados, evitam inconsistências e garantem qualidade desde a modelagem até a consulta.
Na Trilha Conhecendo SQL, você desenvolve esse olhar: aprende a trabalhar com bancos de dados de forma prática, domina consultas essenciais e entende como estruturar informações de forma eficiente e escalável.
Comece agora e evolua de quem apenas consulta dados para quem realmente entende o que está fazendo.