Seite 1 von 1

NULL oder NOT NULL, das ist hier die Frage...

Verfasst: 17.12.2005 17:00
von S2B
Hi @all,
wie schon der Titel sagt, würde ich gerne wissen, was denn nun genau der Unterschied zwischen NULL und NOT NULL beim CREATE TABLE-Query ist. Die phpBB-Group hat in den scheme-Dateien für die Installation zwar beide Methoden verwendet, ich konnte aber kein System dahinter erkennen...

Code: Alles auswählen

-- phpbb_user_group:
CREATE TABLE phpbb_user_group (
   group_id mediumint(8) DEFAULT '0' NOT NULL,
   user_id mediumint(8) DEFAULT '0' NOT NULL,
   user_pending tinyint(1),
   KEY group_id (group_id),
   KEY user_id (user_id)
);

-- phpbb_banlist
CREATE TABLE phpbb_banlist (
   ban_id mediumint(8) UNSIGNED NOT NULL auto_increment,
   ban_userid mediumint(8) NOT NULL,
   ban_ip char(8) NOT NULL,
   ban_email varchar(255),
   PRIMARY KEY (ban_id),
   KEY ban_ip_user_id (ban_ip, ban_userid)
);

Verfasst: 18.12.2005 17:45
von PhilippK
Wenn du ein Feld ohne 'NOT NULL' definierst, muss in dieses Feld kein Wert eingetragen werden, das Feld kann also leer bleiben. Wenn du NOT NULL angibst, muss ein Wert angegeben werden: entweder beim INSERT-Statement oder als Standardwert.

Ein Beispiel: Einen Benutzernamen musst du immer angeben, da ein Benutzer ohne Benutzernamen keinen Sinn macht. Anders sieht es aus, wenn du z.B. einen Preis erfasst: da macht es Sinn, zwischen NULL (ich habe keine Preisangabe) und einem Preis von 0 (kostenlos) zu unterscheiden.

Gruß, Philipp