Your second, and any other 'meanings' are a misuse of NULL, which is your fault, not SQLs
Both of the uses I stated are data values that do not exist in the database.
> Your second, and any other 'meanings' are a misuse of NULL
No, they aren't. They are different, and substantively different, reasons why data does not exist in a database. One is the value does not exist in the domain of which the DB is model, and one is that the value exists in that domain but it is not known.
(Others have pointed out the additional case of "we do not know if it exists", which is ambiguity between those two cases.)
These two substantially different meanings of NULL were recognized fairly early in the history of the relational model by the creator of the model (E.F. Codd), who proposed refining the model by having separate markers for each of those two cases.
1. Value is unknown
2. Value does not exist (for example, outer join results).
These have ery different implications. For example:
somestring || does_not_exist you would think would equal somestring, but with unknown we dont know.