C'est ainsi en SQL (en tant que langage logique) car null signifie inconnu/indéfini.
Cependant, dans les langages de programmation (comme par exemple, C++ ou C#), un pointeur/référence nul est une valeur spécifique avec une signification spécifique -- rien.
Deux riens sont équivalents, mais deux inconnues ne le sont pas. La confusion vient du fait que le même nom (null) est utilisé pour les deux concepts.