Re: NULL is just the pointer analog to NaN
That’s a problem with the language you are using, not the DB. If you don’t want nulls reaching your code it’s trivial to write your queries so they don’t return null.
And in real implementations there will always be data that is unknown, hence Null, how else would you distinguish between a real value and an unknown value? Using some “placeholder” value like -1 for integers? What if your integer can be negative? For strings?
You would have to make assumptions about what value will be stored and handle them individually for each field, and that, imho, is more error prone than a consistent handling of null values.