Je pense que la raison est triple.
Premièrement, les auteurs du SQL n'ont pas eu comme objectif prioritaire de faciliter la vie des programmeurs, mais à faire quelque chose de logique (sinon, ils auraient donné la même syntaxe à l'insert et à l'update ; ils auraient aussi inventé une seule instruction pour faire le insert-or-update ; ils auraient inventé le select étoile sauf certain champs ; etc." )
Deuxièmement, au niveau interne, pour une colonne qui peut être nulle, elle est définie comme étant une structure qui contient un booléen null/not-null, et une chaine de caractères ou un nombre pour contenir sa valeur. Donc quand il y a un "=", le programme va regarder le contenu de la chaine de caractères ou du nombre, mais ne va pas regarder le flag null/not-null. Par contre, quand le programme voit "is null", le programme va regarder le flag sans regarder le contenu. La syntaxe "= null" pourrait être comprise comme une comparaison du contenu avec quelque chose de nul, mais cela n'aurait pas de sens, car c'est le flag qui compte.
Troisièmement, si les tables sont créées en respectant strictement les règles de E. Codd, alors il ne devrait y avoir que très peu de champs nuls dans une base de données.
Message édité par billgatesanonym le 10-07-2009 à 23:11:27