14/02/2019 - Desenvolvimento profissional de jogos indie: o desenvolvedor individual
14/02/2019 - Falando Sobre... Direitos e Deveres dos Clientes e dos Fornecedores de ERP
13/02/2019 - Falando Sobre... Gestão de Custos e os ERP
13/02/2019 - Falando Sobre... Blockchain e os ERP
08/02/2019 - 20/02 - Nova aula gratuita de Criação de Jogos Digitais - Construct
07/02/2019 - O valor null em consultas SQL
07/02/2019 - Lançamento Fev/19 - Estrutura de dados em Java
17/01/2019 - Formações Alfamídia com Turmas Online
10/01/2019 - Lançamento: Curso de Informática em Porto Alegre
07/01/2019 - Aulas gratuitas quinta-feira 10/01
04/01/2019 - Novidades no Site
03/01/2019 - Metodologia Alfamídia
09/11/2018 - Depoimento sobre Aplicações Web com C# I
23/07/2018 - Depoimento cursos gratuitos.
21/02/2018 - Depoimento download da Apostila de Joomla.
20/07/2017 - Depoimento Desenvolvimento Web e Mobile
04/07/2017 - Depoimento Curso de Python
25/05/2017 - Curso Visão Geral de ERP
Publicação: 07/02/2019
Área:Desenvolvimento Web e Mobile
O valor null em consultas SQL
Em geral, consultas SQL costumam ser intuitivas até para quem não tem familiaridade com a linguagem. Uma consulta por todas as pessoas cuja idade é maior que 18 anos retorna exatamente a lista de entradas de dado cuja informação de idade é maior que 18.
Existe uma situação, porém, em que os retornos da linguagem SQL são diferentes daqueles que esperaríamos da consulta, em função da presença de campos cujo valor é null.
É fundamental, para entender estes casos, termos claro o significado de null. null não é falso, nem 0, null significa que a informação sobre aquele campo não está presente no banco de dados.
Observe a tabela a seguir e as consultas na sequência:
id | nome | idade | bloqueado |
---|---|---|---|
1 | João | null | não |
2 | Pedro | 18 | sim |
3 | Paulo | 25 | sim |
4 | Maria | 7 | null |
5 | Lucas | 9 | null |
Se você nunca utilizou SQL mas domina o inglês, ou tem um conhecimento superficial da linguagem, é provável que consiga prever o retorno de todas as consultas, com a possível exceção da consulta 4.
Na verdade, assim como as consultas 1 e 2 não retornaram os dados de João, cuja idade é null, as consultas 3 e 4 não retornaram os dados de Maria e Lucas, cuja informação de bloqueado é também null.
Só que para a maioria das pessoas é natural esperar que a consulta 4 retorne também os dados de Maria e Lucas, já que ambos não estão marcados como "sim" no campo bloqueado. Porém, o comportamento de uma linguagem precisa ser consistente. Assim, o SQL não vai retornar os campos null para um teste de condição, já que null indica não se saber qual o valor do campo, exceto para o teste "is null".
Confira no vídeo a seguir a demonstração de cada uma destas consultas e uma discussão mais detalhada de como é gerado o retorno de cada uma delas: