NULL
A special value in SQL, indicating the absence of data. Any arithmetic operation or equality test involving a NULL
value, in turn produces a NULL
result. (Thus it is similar to the IEEE floating-point concept of NaN, "not a number".) Any aggregate calculation such as AVG()
ignores rows with NULL
values, when determining how many rows to divide by. The only test that works with NULL
values uses the SQL idioms IS NULL
or IS NOT NULL
.
NULL
values play a part in index operations, because for performance a database must minimize the overhead of keeping track of missing data values. Typically, NULL
values are not stored in an index, because a query that tests an indexed column using a standard comparison operator could never match a row with a NULL
value for that column. For the same reason, unique indexes do not prevent NULL
values; those values simply are not represented in the index. Declaring a NOT NULL
constraint on a column provides reassurance that there are no rows left out of the index, allowing for better query optimization (accurate counting of rows and estimation of whether to use the index).
Because the primary key must be able to uniquely identify every row in the table, a single-column primary key cannot contain any NULL
values, and a multi-column primary key cannot contain any rows with NULL
values in all columns.
Although the Oracle database allows a NULL
value to be concatenated with a string, InnoDB treats the result of such an operation as NULL
.
See also index.
See also primary key.
See also SQL.