"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Tratamento NULL em SQL

Tratamento NULL em SQL

Publicado em 31/07/2024
Navegar:577

NULL Handling in SQL

Introdução

Lidar com valores NULL em SQL é um aspecto fundamental que todo profissional de banco de dados deve compreender. NULL representa valores ausentes ou indefinidos em uma tabela de banco de dados e é crucial manipular esses valores corretamente para garantir a integridade e a precisão de suas operações de dados. Este artigo irá aprofundar o conceito de NULL em SQL, suas implicações e várias estratégias para lidar com valores NULL.

Compreendendo NULL em SQL

NULL em SQL é um marcador especial usado para indicar que um valor de dados não existe no banco de dados. Não é equivalente a uma string vazia ou a um valor zero. Em vez disso, NULL significa a ausência de qualquer valor. A presença de valores NULL em uma tabela de banco de dados pode afetar os resultados das consultas, especialmente ao realizar operações como comparações, agregações e junções.

Principais características de NULL

  1. Valor indeterminado: NULL representa um valor desconhecido ou indeterminado.
  2. Não comparabilidade: comparações envolvendo NULL (por exemplo, =, ) sempre resultam em NULL, não em TRUE ou FALSE.
  3. Tratamento especial em funções: Muitas funções SQL têm comportamento específico ao lidar com valores NULL.

Trabalhando com NULL em SQL

Verificando NULL

Para verificar se um valor é NULL, você usa os operadores IS NULL ou IS NOT NULL. Por exemplo:

SELECT * FROM employees WHERE manager_id IS NULL;

Essa consulta recupera todos os funcionários que não possuem gerente.

NULL e operadores de comparação

Comparações diretas com NULL usando os operadores de comparação padrão (=, !=,

SELECT * FROM employees WHERE manager_id = NULL;

Esta consulta não retornará nenhuma linha, mesmo que alguns valores de manager_id sejam NULL. Em vez disso, você deve usar:

SELECT * FROM employees WHERE manager_id IS NULL;

NULL em agregações

Funções de agregação como SUM, AVG, COUNT, etc., lidam com valores NULL de maneira diferente. Por exemplo, SUM e AVG ignoram valores NULL, enquanto COUNT pode contá-los se especificado explicitamente.

SELECT SUM(salary) FROM employees;  -- NULL values are ignored
SELECT AVG(salary) FROM employees;  -- NULL values are ignored
SELECT COUNT(manager_id) FROM employees;  -- NULL values are ignored
SELECT COUNT(*) FROM employees WHERE manager_id IS NULL;  -- Counts only NULL values

Lidando com NULL em junções

Ao realizar junções, valores NULL podem levar a resultados inesperados. Por exemplo, INNER JOIN exclui linhas com valores NULL na condição de junção, enquanto LEFT JOIN as inclui.

SELECT e.name, d.department_name
FROM employees e
LEFT JOIN departments d ON e.department_id = d.id;

Esta consulta recupera todos os funcionários, inclusive aqueles sem departamento, por causa do LEFT JOIN.

Tratamento de NULL em consultas SQL

Usando COALESCE

A função COALESCE retorna o primeiro valor não NULL em uma lista de expressões. É útil para substituir NULL por um valor padrão.

SELECT name, COALESCE(manager_id, 'No Manager') AS manager_id
FROM employees;

Esta consulta substitui valores NULL manager_id pela string 'No Manager'.

Usando IFNULL ou ISNULL

Muitos dialetos SQL fornecem funções como IFNULL (MySQL) ou ISNULL (SQL Server) para lidar com valores NULL.

-- MySQL
SELECT name, IFNULL(manager_id, 'No Manager') AS manager_id FROM employees;

-- SQL Server
SELECT name, ISNULL(manager_id, 'No Manager') AS manager_id FROM employees;

Usando NULLIF

A função NULLIF retorna NULL se os dois argumentos forem iguais; caso contrário, ele retornará o primeiro argumento. É útil para evitar erros de divisão por zero.

SELECT price / NULLIF(quantity, 0) AS unit_price
FROM products;

Esta consulta evita a divisão por zero retornando NULL se a quantidade for zero.

Melhores práticas para tratamento de NULL

  1. Definir valores padrão: Ao criar tabelas, defina valores padrão para colunas para minimizar ocorrências NULL.
  2. Use funções apropriadas: Utilize funções como COALESCE, IFNULL e NULLIF para lidar com valores NULL de maneira eficaz.
  3. Validar dados: implemente regras de validação de dados para evitar valores NULL onde eles não são desejados.
  4. Considere o design do banco de dados: projete seu esquema de banco de dados para lidar com valores NULL adequadamente, considerando o impacto nas consultas e no desempenho.

Conclusão

O tratamento de valores NULL em SQL requer consideração cuidadosa e compreensão de seu comportamento em diferentes operações. Ao usar as funções SQL apropriadas e aderir às práticas recomendadas, você pode garantir que suas consultas ao banco de dados produzam resultados precisos e confiáveis. Esteja você verificando NULL, realizando agregações ou unindo tabelas, o tratamento adequado de NULL é crucial para manter a integridade dos dados e alcançar os resultados desejados em suas operações SQL.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/kellyblaire/null-handling-in-sql-1mp2?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3