Field both NOT NULL and DEFAULT NULL
That's perfectly acceptable, it basically states: 


  You have to provide a value for this, but I have no clue what that would be. 


If you define a default value, you claim that this is a sensible value for any row that doesn't supply a value - which is not really feasible for most attributes. 

Think about a column named first_name - you want to make sure a value is supplied but there is no way you can come up with a sensible default value for that. Or a column named salary in an employee table.