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.

Em SQL, NULL é tanto um valor quanto uma palavra-chave. Vamos analisar primeiro o valor NULL.
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.
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 | |
|---|---|---|---|---|---|---|---|
| 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 | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
| 5 | Leonard Hofstadter | Male | NULL | 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.
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 | |
|---|---|---|---|---|---|---|---|
| 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.


