NULL

NOT NULL
Die NOT NULL-Angaben bewirken dass ein Datensatz an dieser Stelle ein Wert besitzen muss.

This is an important field in database terminology.
It essentially means, "Should the field contain anything?".
If you set a field to NOT NULL, then you can't leave it blank when you come to adding records to your database.
Otherwise you'll get errors.


NOT NULL

NOT NULL bedeutet, dass immer etwas in das jeweilige Feld geschrieben wird.

Da der Datentyp eine Ganzzahl ist, wäre das also mindestens eine Null (eine echte, also 0).

Um aber zu verhindern dass die immer wieder in ein Feld geschrieben wird, gibt es AUTO_INCREMENT.

Um aber zu verhindern dass die immer wieder in ein Feld geschrieben wird, gibt es AUTO_INCREMENT.

4. Schlüsseltypen

Unique

Hier hätten wir zunächst mal den "eindeutigen" Schlüssel. Er zeichnet sich dadurch aus, dass die Werte in einer(!) Spalte eindeutig sind. Es ist also nicht möglich darin doppelte Einträge anzulegen. Ein schönes Beispiel ist obige Bankverbindung. Man belegt die BLZ mit einem UNIQUE KEY. So ergibt sich aus der Kombination mit der Kontonummer (Kto-Nr.) ein eindeutiger Schlüssel.

Primary

Der Primärschlüssel unterscheidet sich vom eindeutigen dadurch, dass der KEY einzigartig ist und nicht der Wert. Im Klartext bedeutet es, dass eine Spalte mit UNIQUE KEY einmalig den Wert NULL haben darf, bei PRIMARY KEY dagegen nicht. Der Unterschied ist ehrlich gesagt marginal. Daher werde ich auf die Feinheiten später eingehen. Hier geht es erst mal nur ums Prinzip.


MySQL - SQL - Grundlagen- NULL

1. Der Wert NULL

Was ist NULL nicht? Es ist nicht die Zahl 0 und es ist auch keine leere Zeichenkette à la ' '.

Und was ist nun NULL?

Wir haben in einer Adresstabelle die Spalte wohnort, in der wir die Straße, die PLZ und den Wohnort abspeichern. Gut das sollte man nicht machen, aber die Gründe kennt ihr ja schon.

INSERT INTO adresse VALUES ('Peter Kropff',NULL);

Diese Anweisung bedeutet, dass der Wohnort unbekannt ist.
Ein NULL ist also nichts anderes als das Eingeständnis eigener Unwissenheit. Ganz anders verhält es sich dagegen bei diesem SQL-Statement.

INSERT INTO adresse VALUES ('Peter Kropff', '');

In diesem Fall bedeutet der Leerstring '', dass der Kerl keinen Wohnort hat, also obdachlos ist.

2.

Will man nun herausfinden, bei welchen Personen wir den Wohnort nicht kennen, so prüfen wir auf NULL:

SELECT * FROM adresse WHERE wohnort IS NULL;

Wollen wir dagegen alle Obdachlosen suchen, so geschieht dies mit folgender Anweisung:

SELECT * FROM adresse WHERE wohnort = '';

Die Negation der obigen Abfragen sieht dann so aus:

SELECT * FROM adresse WHERE wohnort != '';
SELECT * FROM adresse WHERE wohnort IS NOT NULL;

3. default

Wenn man eine Tabelle erstellt (dazu später mehr), so wird bei allen Spalten als Standardwert NULL vorgegeben.
Will man aber den nicht zulassen, so muss man das zusätzlich angeben:

NOT NULL default ''
NOT NULL default 0