Richtig. COUNT(*) sind alle Zeilen in der Tabelle, COUNT(Expression) ist nur dort, wo der Ausdruck nicht null ist.
Wenn alle Spalten NULL sind (was anzeigt, dass Sie keinen Primärschlüssel haben, also sollte dies in einer normalisierten Datenbank nicht passieren), COUNT(*) immer noch gibt alle eingefügten Zeilen zurück. Tu das einfach nicht.
Sie können sich das Symbol * so vorstellen, dass es „in der Tabelle“ und nicht „in irgendeiner Spalte“ bedeutet.
Dies wird im MySQL-Referenzhandbuch