わかりやすくするために編集
SQL仕様によると、主キーにNULLを含めることはできません。これは、「NOTNULLPRIMARYKEY」または単に「PRIMARYKEY」のいずれかで列を装飾することも同じことを行う必要があることを意味します。ただし、SQL標準に正しく準拠している問題のSQLエンジンに依存しています。初期のバグによる例として、SQL Liteは標準を正しく実装せず、非整数の主キーでnull値を許可します(sqlite.org/lang_createtable.htmlを参照)。これは、(少なくとも)SQLLiteの場合、2つのステートメントが2つの異なることを行うことを意味します。
「NOTNULLPRIMARYKEY」は意図を明確に示しており、主キーが削除されてもnull以外の値を示し続けるため、これが推奨される構文です。