MySQL Tutorial É NULO E NÃO É NULO com EXEMPLOS
No SQL Null é um valor e também uma palavra-chave. Vamos examinar o valor NULL primeiro –
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 campos não estarão disponíveis.
Para atender aos requisitos de verdadeiros sistemas de gerenciamento de banco de dados relacional, MySQL usa NULL como espaço reservado para os valores que não foram enviados. A captura de tela abaixo mostra a aparência dos valores NULL no banco de dados.
Vejamos agora alguns dos princípios básicos do 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.
- Operaçoes aritimeticas envolvendo NULL sempre retornar NULO por exemplo, 69 + NULO = NULO.
- Todos funções agregadas afeta apenas linhas que não possuem valores NULL.
Vamos agora demonstrar como a função count trata valores nulos. Vamos ver 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 |
Vamos contar todos os membros que atualizaram seu contact_number
SELECT COUNT(contact_number) FROM `members`;
A execução da consulta acima nos fornece os seguintes resultados.
COUNT(contact_number) |
---|
7 |
Nota: Valores NULL não foram incluídos
O que não é?
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 |
---|---|
Verdadeiro | Falso |
Falso | Verdadeiro |
Por que usar NÃO nulo?
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 que possuem o 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 sobre os quais nossos dados operam.
Valores NÃO NULOS
Suponhamos que queremos criar uma tabela com determinados 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');
Executando o script acima em MySQL workbench dá o seguinte erro-
Palavras-chave NULAS
NULL também pode ser usado como 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 fins. A sintaxe básica quando null é usado como palavra-chave é a seguinte
`comlumn_name' IS NULL `comlumn_name' 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 booleana. 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 seja nulo. Podemos executar uma consulta como
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
A execução da consulta acima fornece apenas registros onde o número de contato não é nulo.
Suponha que queiramos registros de membros onde o número de contato seja nulo. Podemos usar a seguinte consulta
SELECT * FROM `members` WHERE contact_number IS NULL;
A execução da 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 | janetjones@yagoo.cm |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
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
Lógica de três valores – realizar operações booleanas em condições que envolvem NULL pode retornar “Desconhecido”, “Verdadeiro” ou “Falso”.
Por exemplo, nos usando a palavra-chave “IS NULL” ao fazer operações de comparação envolvendo NULO pode retornar verdadeiro or falso. Usando outros operadores de comparação retorna “Desconhecido” (NULO).
Suponha que você compare o número cinco com 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 espaço reservado de valor para campos opcionais da tabela.
- 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 valores booleanos e é avaliada como verdadeira se o valor booleano for falso e falsa 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.