No SQL, Null é tanto um valor quanto uma palavra-chave. Vejamos primeiro o valor NULL -
Nulo como um valor
Em termos simples, NULL é simplesmente um espaço reservado 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 dos verdadeiros sistemas de gerenciamento de banco de dados relacional, o MySQL usa NULL como o marcador de posição para os valores que não foram enviados. A captura de tela abaixo mostra como os valores NULL aparecem no banco de dados.
Vamos agora dar uma olhada em alguns dos fundamentos de NULL antes de prosseguirmos na discussão.
- NULL não é um tipo de dados - isso significa que não é reconhecido como "int", "data" ou qualquer outro tipo de dados definido.
- As operações aritméticas envolvendo NULL sempre retornam NULL, por exemplo, 69 + NULL = NULL.
- Todas as funções de agregação afetam apenas as linhas que não possuem valores NULL .
Vamos agora demonstrar como a função de contagem trata os valores nulos. Vamos ver o conteúdo atual da tabela de membros
SELECT * FROM `members`;
Executar o 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 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
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 |
Vamos contar todos os membros que atualizaram seu contact_number
SELECT COUNT(contact_number) FROM `members`;
Executar a consulta acima nos dá os seguintes resultados.
COUNT(contact_number) |
---|
7 |
Nota: os valores NULL não foram incluídos
O que não é?
O operador lógico NOT é usado para testar as condições booleanas e retorna verdadeiro se a condição for falsa. O operador NOT retorna falso se a condição testada for verdadeira
Doença |
NÃO Resultado do Operador |
Verdade |
Falso |
Falso |
Verdade |
Por que usar NOT null?
Haverá casos em que teremos que realizar cálculos em um conjunto de resultados de consulta e retornar os valores. A execução de qualquer operação aritmética em colunas com valor NULL retorna resultados nulos. Para evitar que tais situações aconteçam, podemos empregar o uso da cláusula NOT NULL para limitar os resultados nos quais nossos dados operam.
Valores NOT NULL
Vamos supor que queremos criar uma tabela com certos campos que sempre devem ser fornecidos com valores ao inserir novas linhas em uma tabela. Podemos usar a cláusula NOT NULL em um determinado campo ao criar a tabela.
O exemplo mostrado abaixo cria uma nova tabela que contém os dados do funcionário. O número do funcionário deve ser sempre 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 nome do funcionário e ver o que acontece.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Executar o script acima no ambiente de trabalho MySQL dá o seguinte erro -
Palavras-chave NULL
NULL também pode ser usado como uma palavra-chave ao executar operações booleanas em valores que incluem NULL. A palavra-chave "IS / NOT" é usada em conjunto com a palavra NULL para tais propósitos. A sintaxe básica quando null é usado como uma palavra-chave é a seguinte
`comlumn_name' IS NULL`comlumn_name' NOT NULL
AQUI
- "IS NULL" é a palavra-chave que executa a comparação booleana. Retorna verdadeiro se o valor fornecido for NULL e falso se o valor fornecido não for NULL.
- "NOT NULL" é a palavra-chave que executa a comparação booleana. Ele retorna verdadeiro se o valor fornecido não for NULL e falso se o valor fornecido for nulo.
Vejamos agora um exemplo prático que usa a palavra-chave NOT NULL para eliminar todos os valores de coluna que possuem valores nulos.
Continuando com o exemplo acima, suponha que precisamos de detalhes de membros cujo número de contato não é nulo. Podemos executar uma consulta como
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
A execução da consulta acima fornece apenas registros em que o número do contato não é nulo.
Suponha que queremos registros de membros onde o número de contato é nulo. Podemos usar a seguinte consulta
SELECT * FROM `members` WHERE contact_number IS NULL;
Executar a consulta acima fornece detalhes do membro cujo número de contato é NULL
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 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
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 |
Comparando valores nulos s
Lógica de três valores - a execução de operações booleanas em condições que envolvem NULL pode retornar "Desconhecido", "Verdadeiro" ou "Falso".
Por exemplo, usar a palavra-chave "IS NULL" ao fazer operações de comparação envolvendo NULL pode retornar verdadeiro ou falso . O uso de outros operadores de comparação retorna "Desconhecido" (NULL).
Suponha que você compare o número cinco com o 5
SELECT 5 =5;
O resultado da consulta é 1, o que significa VERDADEIRO
5 =5 |
---|
1 |
Vamos fazer a mesma operação com NULL
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Vejamos outro exemplo
SELECT 5 > 5;
5> 5 |
---|
0 |
O resultado da consulta é 0, o que significa FALSO
Vejamos o mesmo exemplo usando NULL
SELECT NULL > NULL;
NULL> NULL |
---|
NULL |
Vamos usar a palavra-chave IS NULL
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
O resultado da consulta é 0, que é FALSO
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
O resultado da consulta é 1, que é VERDADEIRO
Resumo
- NULL é um marcador de posição de valor para campos de tabela opcionais.
- O MySQL trata o valor NULL de maneira diferente de outros tipos de dados. Os valores NULL, quando usados em uma condição, são avaliados como um valor booleano falso.
- A operação lógica NOT é usada para testar os valores booleanos e avalia como verdadeiro se o valor booleano for falso e falso se o valor booleano for verdadeiro.
- A cláusula NOT NULL é usada para eliminar valores NULL de um conjunto de resultados
- A execução de operações aritméticas em valores NULL sempre retorna resultados NULL.
- Os operadores de comparação como [, =, etc.] não podem ser usados para comparar valores NULL.