MySQL É NULO e NÃO É NULO com exemplos

⚡ Resumo Inteligente

MySQL IS NULL e IS NOT NULL são palavras-chave de comparação que verificam se uma coluna contém um valor ausente. NULL indica dados ausentes, comporta-se de maneira diferente de zero ou de uma string vazia e requer operadores específicos para uma filtragem confiável.

  • 🧩 Definição Essencial: NULL é um marcador para dados que não existem. Não é um tipo de dado e não é o número zero.
  • Comportamento aritmético: Qualquer expressão aritmética que envolva NULL retorna NULL, portanto 69 + NULL resulta em NULL em vez de 69.
  • 📊 Impacto agregado: COUNT(coluna) e outras funções de agregação ignoram linhas NULL, enquanto COUNT(*) ainda conta todas as linhas da tabela.
  • 🚫 Restrição NOT NULL: Declarar uma coluna como NOT NULL rejeita qualquer inserção que omita um valor, o que protege campos obrigatórios como identificadores.
  • 🔍 Filtragem correta: Os testes IS NULL e IS NOT NULL são os únicos confiáveis, pois o operador de igualdade nunca corresponde a um valor NULL.
  • ⚖️ Lógica Trivalente: Comparações com NULL retornam UNKNOWN, portanto SELECT NULL = NULL produz NULL em vez de TRUE.

MySQL É NULO e NÃO É NULO

Em SQL, NULL é tanto um valor quanto uma palavra-chave. Vamos analisar primeiro o valor NULL.

MySQL É NULO E NÃO É NULO

O que é NULL em MySQL?

Em termos simples, NULL é um marcador de posição para dados que não existem.Ao realizar operações de inserção em tabelas, haverá momentos em que alguns valores de campo não estarão disponíveis.

Para atender aos requisitos de verdadeiros sistemas de gerenciamento de banco de dados relacional, MySQL Utiliza NULL como marcador para os valores que não foram submetidos. A captura de tela abaixo mostra como os valores NULL aparecem em uma tabela de banco de dados.

Nulo como um valor

Observe que as células vazias são marcadas como NULL, não como texto em branco e nem como zero. Antes de prosseguirmos, vamos revisar alguns conceitos básicos sobre o valor NULL.

  • NULL não é um tipo de dados – isso significa que não é reconhecido como “int”, “data” ou qualquer outro tipo de dados definido.
  • Operaçoes aritimeticas envolvendo NULL sempre retornar NULOPor exemplo, 69 + NULL = NULL.
  • Os mais funções agregadas Ignorar linhas que contenham valores NULLA única exceção é COUNT(*), que conta todas as linhas independentemente de NULL.

Como as funções de agregação tratam valores NULL

Essa regra altera as respostas retornadas pelas consultas de relatório, então vamos comprová-la. Comece com o conteúdo atual da tabela de membros.

SELECT * FROM `members`;

A execução do script acima nos dá os seguintes resultados.

membership_ number full_ names gender date_of_ birth physical_ address postal_ address contact_ number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345rm@tstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL
5 Leonard Hofstadter MaleNULL Woodcrest NULL 845738767 NULL
6 Sheldon Cooper Male NULL Woodcrest NULL 976736763 NULL
7 Rajesh Koothrappali Male NULL Woodcrest NULL 938867763 NULL
8 Leslie Winkle Male 14-02-1984 Woodcrest NULL 987636553 NULL
9 Howard Wolowitz Male 24-08-1981 SouthPark P.O. Box 4563 987786553 lwolowitz[at]email.me

A coluna destacada "contact_ number" contém nove linhas no total, mas duas delas são NULL. Vamos contar todos os membros que atualizaram seu número de contato.

SELECT COUNT(contact_number) FROM `members`;

A execução da consulta acima nos fornece os seguintes resultados.

COUNT(contact_number)
7

Observação: A resposta é 7 e não 9, porque os dois valores NULL não foram incluídos. Executar COUNT(*) na mesma tabela retornaria 9, já que COUNT(*) conta linhas em vez de valores.

Valores NÃO NULOS

Uma abordagem mais segura é impedir completamente que valores NULL entrem em colunas obrigatórias. Essa é a função da restrição NOT NULL.

O que é o NÃO? Operator?

O operador lógico NOT é usado para testar condições booleanas e retorna verdadeiro se a condição for falsa. O operador NOT retorna falso se a condição testada for verdadeira.

Condição NÃO Operaresultado
a Verdadeira Falso
Falso a Verdadeira

Por que usar NOT NULL?

Haverá casos em que precisaremos realizar cálculos em um conjunto de resultados de consulta e retornar os valores. Realizar qualquer operação aritmética em uma coluna que contém um valor NULL retorna um resultado NULL. Para evitar tais situações, podemos utilizar a cláusula NOT NULL para limitar os resultados sobre os quais nossos dados operam.

Criando uma tabela com uma coluna NOT NULL

Suponhamos que desejamos criar uma tabela com determinados campos que devem sempre conter valores ao inserir novas linhas. Podemos usar a cláusula NOT NULL em um campo específico ao criar a tabela.

O exemplo abaixo cria uma nova tabela que contém dados de funcionários. O número do funcionário deve sempre ser fornecido.

CREATE TABLE `employees`(
  employee_number int NOT NULL,
  full_names varchar(255) ,
  gender varchar(6)
);

Vamos agora tentar inserir um novo registro sem especificar o número do funcionário e ver o que acontece.

INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');

Executando o script acima em MySQL Workbench Ocorre o seguinte erro, pois a coluna obrigatória foi omitida.

Valores NÃO NULOS

Palavras-chave IS NULL e IS NOT NULL

A restrição impede a entrada de novos valores NULL. Para trabalhar com valores NULL já existentes, utiliza-se NULL como palavra-chave. A sintaxe é a seguinte:

column_name IS NULL
column_name IS NOT NULL

AQUI

  • "É NULO" é a palavra-chave que realiza a comparação booleana. Retorna verdadeiro se o valor fornecido for NULL e falso se o valor fornecido não for NULL.
  • “NÃO É NULO” é a palavra-chave que realiza a comparação inversa. Ela retorna verdadeiro se o valor fornecido não for NULL e falso se o valor fornecido for NULL.

Vejamos um exemplo prático que utiliza a palavra-chave IS NOT NULL para eliminar todas as linhas que contêm valores NULL em uma coluna.

Continuando com a tabela de membros acima, suponha que precisamos dos detalhes dos membros cujo número de contato não seja NULL. Podemos executar uma consulta como esta.

SELECT * FROM `members` WHERE contact_number IS NOT NULL;

A execução da consulta acima retorna apenas os sete registros onde o número de contato está presente, o que corresponde ao resultado da contagem (COUNT) da seção anterior.

Agora, suponha que desejamos o oposto: os registros de membros onde o número de contato está ausente. Podemos usar a seguinte consulta.

SELECT * FROM `members` WHERE contact_number IS NULL;

A execução da consulta acima retorna os dois registros de membros cujo número de contato é NULL.

membership_ number full_names gender date_of_birth physical_address postal_address contact_ number email
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

Atenção: Uma condição como WHERE contact_number = NULL retorna um conjunto de resultados vazio, mesmo que existam valores NULL. O operador de igualdade nunca pode corresponder a NULL, portanto IS NULL é o único teste correto.

Comparando valores NULL com lógica trivalente

Lógica de três valores – realizar operações booleanas em condições que envolvem NULL pode retornar “Desconhecido”, “Verdadeiro” ou “Falso”.

Usando a palavra-chave “IS NULL” ao fazer operações de comparação envolvendo NULO Retorna verdadeiro or falsoO uso dos outros operadores de comparação retorna “Desconhecido” (NULO)A tabela abaixo compara cada expressão lado a lado.

Expressão Resultado Significado
SELECIONE 5 = 5; 1 VERDADEIRO
SELECIONE NULL = NULL; NULL DESCONHECIDO
SELECIONE 5 > 5; 0 FALSE
SELECIONE NULL > NULL; NULL DESCONHECIDO
SELECT 5 IS NULL; 0 FALSE
SELECIONE NULL É NULL; 1 VERDADEIRO

Compare o número cinco consigo mesmo e, em seguida, repita a operação com NULL.

SELECT 5 =5;
SELECT NULL = NULL;
5 =5 NULL = NULL
1 NULL

O primeiro resultado é 1 (VERDADEIRO). O segundo é NULO, porque MySQL Não é possível afirmar que um valor desconhecido é igual a outro valor desconhecido. Agora, use a palavra-chave IS NULL nos mesmos valores.

SELECT 5 IS NULL;
SELECT NULL IS NULL;
5 IS NULL NULL IS NULL
0 1

Desta vez, as respostas são definitivas: 0 (FALSO) e 1 (VERDADEIRO). Somente as palavras-chave IS NULL e IS NOT NULL retornam uma resposta definitiva quando NULL está envolvido.

Perguntas Frequentes

Zero é um número e uma string vazia é texto, portanto ambos correspondem aos testes de igualdade. NULL significa que nenhum valor foi fornecido, razão pela qual responde apenas a IS NULL e IS NOT NULL.

IFNULL(coluna, 'N/A') retorna o substituto sempre que a coluna for NULL. COALESCE(a, b, c) retorna o primeiro argumento que não for NULL. Ambos são úteis em contextos complexos. MySQL funções e relatórios.

Não. MySQL O atributo NOT NULL é aplicado automaticamente a todas as colunas da chave primária, pois uma chave que identifica uma linha não pode estar ausente. Um índice UNIQUE é diferente e permite múltiplos valores NULL.

Geralmente, sim. Assistentes de IA dentro de ferramentas como MySQL Workbench Transformar “membros sem número de telefone” em uma cláusula WHERE column IS NULL. RevVeja o filtro, porque um teste de igualdade com NULL silenciosamente não retorna nada.

Muitas vezes, sim. As ferramentas de revisão de IA sinalizam falhas como comparações com = NULL, por exemplo. SELECIONE que calcula a média de uma coluna que contém valores NULL e de uma lista NOT IN que contém valores NULL. A decisão final cabe à pessoa que conhece os dados.

Resuma esta postagem com: