Moin!
warum sollte man eher not null als null benutzen.
Die Mysql-Doku sagt dazu:
"Deklarieren Sie Spalten - falls möglich - als NOT NULL. Das macht alles schneller und Sie sparen ein Bit pro Spalte. Beachten Sie, dass, wenn Sie wirklich NULL in Ihrer Applikation benötigen, Sie dieses natürlich benutzen sollten. Vermeiden Sie nur, einfach alle Spalten vorgabemäßig auf NULL zu haben."
Mit anderen Worten: Wenn deine Applikation es benötigt, dass die Datenbank zwischen "ist nichts gespeichert (= NULL)" und "Leerstring bzw. Nullwert gespeichert" unterscheiden muß, dann benutze "NULL". Dann mußt du das bei irgendeiner Abfrage aber auch tatsächlich wissen wollen.
Meistens benötigt man NULL-Spalten nämlich nicht. MySQL zwingt dich nicht, NOT NULL-Spalten mit Werten zu versehen. Wenn du keinen angibst, wird der Default-Wert, der beim Erstellen der Tabelle festgelegt wurde, eingetragen. Das ist üblicherweise eben ein Leerstring oder die Zahl 0.
Es wurde das Beispiel "Telefonnummer hat nicht jeder" angesprochen. Dafür braucht man keine NULL-Spalte. Ein Leerstring zeigt ebenso deutlich, dass keine Telefonnummer gespeichert ist.
Anders, wenn du z.B. Meßwerte speicherst. Wenn zu einer Messung aus irgendwelchen Gründen kein Wert verfügbar ist, muß das irgendwie dokumentiert werden. Es ist blödsinnig, den Wert 0 einzutragen, wenn dieser Wert auch als regulärer Meßwert vorkommen kann. Und es ist ebenso unsinnig, irgendeinen anderen Wert einzutragen. Erinnere dich einfach an die ganzen Jahr-2000-Probleme. Programmierer neigten dazu, "typische" Werte als "Nichts vorhanden"-Werte zu verwenden. Also beispielsweise das Datum "9.9.99" als "Kein Datum". Das war 1980 kein Problem - das wurde erst zum Problem.
Deshalb kannst du mit einer NULL-Spalte so auf elegante Weise nicht nur Meßwerte, sondern auch "kein Meßwert" in die DB eintragen - und diese kollidieren dann nicht miteinander.
- Sven Rautenberg
ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|