A couple of points. first, MySQL's handling of NULLs is not standard, see: http://sql-info.de/mysql/gotchas.html.
Next, a NULL is NOT the same as blank.
For a table created like this:
create table test (info text not null);
the insert statements:
insert into test (info) values ('');
insert into test (info (values ('NULL');
are perfectly legal. '' is NOT the same as NULL. If you're thinking NULL as in null terminated string or some other meaning, you need to realize that SQL NULL doesn't mean the same thing. In SQL it means there may or may not be a value, but we don't know what it is. Now, for the above created table, the insert statement:
insert into test (info) values (NULL);
is NOT legal. Note that 'NULL' is the string NULL, which has no special meaning, while NULL (without the single quotes) is the keyword NULL, which has the special meaning.
Now, on to other, stranger features of NULL. Since NULL represents an unknown value, NULL does not equal NULL. So, if we had a table with NULL values, we would use the syntax IS NULL to match those rows, not =NULL.
i.e.:
select from table where field=NULL;
should return nothing, while
select from table where field IS NULL;
will return all the rows where field is null.