El rpimer problema es que NULL no es un dato. Es un estado, un estado de indefinición, pero un estado al fín.
Como no es un dato, no funcionan con él los operadores lógicos porque no son posibles comparaciones contra la nada. En otros DBMS se pueden hacer, pero no en MySQL.
En ptincipio, si existe la posibilidad de que lleguen nulos tienes varias formas de manejarlo:
1) Programáticamente, todos los lenguajes pueden reconocer si en objeto recibido en la tabla es nulo o no, porque en todos los lenguajes existe un objeto Null, Nothing o Nil. Por ello, lo puedes controlar.
2) A nivel de SQL, sólo se puede manejar con clausulas IS NULL o IS NOT NULL, pero eso sólo en el WHERE o en comparaciones lógicas.
3) En el SELECT, es posible reemplazar un valor NULL por otra cosa, si se desea, por ejemplo por un caracter vacío (vacío y NULL no son lo mismo), pero para ello se debe invocar uno a uno los campos, y no se puede usar el asterisco (*) en el SELECT