Campi che possono essere vuoti o nulli sono 2 cose differenti. "NULL" non vuol dire vuoto, vuol dire che non c'è un valore per tale campo, può sembrare la stessa cosa, ma non lo è.
Nei campi definiti come "NULLABLE" in fase di creazione della tabella, quindi senza la clausola "NOT NULL", se non ci inserisci niente durante la INSERT risulteranno contenere NULL, che è comunque un valore.
Per le altre tipologie di campi, quelli "NOT NULL", devi per forza di cose dichiararne il contenuto durante l'INSERT (anche la stringa vuota se è un varchar o char, che comunque non è NULL, o un valore neutro per gli altri tipi di campi) oppure puoi ometterlo se nella definizione della tabella hai previsto dei valori di default per quei campi.
Alla fine di tutto, se hai dei campi "NOT NULL", questi per forza vanno inizializzati con un valore, definito esplicitamente nell'INSERT oppure automaticamente definendo un valore di default.