A NULL value in databases is a system
value that takes up one byte of
storage and indicates that a value is
not present as opposed to a space or
zero or any other default value. The
field in a database containing the
NULL value means that the content of
this cell is unknown at the time of
looking at it. A column that allows
NULL values also allows rows to be
inserted with no values at all in that
column. There are several pros and
cons of using NULL values as opposed
to default values:
Pros
NULL value does not have the data
type, therefore can be inserted to any
data structure and any database
column. Default values, on the other
hand, need to have their data type
specified and a default value in one
column might look the same in another
column, but it might be of a different
type.
NULL is often used in schemas where a
value is optional. It is a convenient
method for omitting data entry for
unknown fields without having to
implement additional rules, like
storing negative values in an integer
field to represent omitted data.
Since the NULL value takes up only 1
bit of memory space, they may be
useful when optimising the database.
Using those values is much more
efficient than default values, e.g.
character’s 8 bits and integer’s
16bits.
While your system requirements may
change over time and the default value
types with them, NULL value is always
NULL so there is no need to update the
type of data.
Assigning Not Null to table schemas
can also help with table validation,
in a sense that the column with Not
Null criteria will require a value to
be inserted. Default values do not
have these capabilities.
Cons
NULL values are easily confused with
empty character strings, which return
a blank value to the user when
selected. In this sense, default
values are less confusing and are the
safer option, unless the default value
is set to the empty string.
If NULL values are allowed in the
database, they may cause the designer
some extra time and work as they can
make the database logic more
complicated, especially when there are
a lot of comparisons to null values in
place.