MySQL - NULL-Werte

Hallo da draußen, angehende Datenbankenthusiasten! Heute tauchen wir ein in die faszinierende Welt der NULL-Werte in MySQL. Als Ihr freundlicher Nachbarcomputerlehrer freue ich mich darauf, Sie auf dieser Reise zu führen. Also holen Sie sich ein Getränk Ihrer Wahl und los geht's!

MySQL - NULL Values

Die MySQL NULL-Werte

Was ist ein NULL-Wert?

Bevor wir ins Detail gehen, lassen Sie uns verstehen, was NULL eigentlich bedeutet. In MySQL repräsentiert NULL einen fehlenden oder unbekannten Wert. Es ist wie wenn Sie Ihren Freund fragen, was er zum Frühstück gegessen hat, und er sagt: "Ich erinnere mich nicht." Das ist ein NULL-Wert im echten Leben!

NULL ist weder null, eine leere Zeichenkette noch falsch. Es ist das Fehlen jeglichen Wertes. Stellen Sie es sich als Platzhalter vor, der sagt: "Hey, hier sollte etwas sein, aber wir wissen nicht, was es ist!"

Warum sind NULL-Werte wichtig?

NULL-Werte spielen eine entscheidende Rolle im Datenbankmanagement. Sie erlauben uns:

  1. Fehlende Informationen darzustellen
  2. Zwischen null und unbekannten Werten zu unterscheiden
  3. Spezielle Operationen und Vergleiche durchzuführen

Schauen wir uns ein einfaches Beispiel an:

CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
grade FLOAT
);

INSERT INTO students (id, name, age, grade) VALUES
(1, 'Alice', 20, 85.5),
(2, 'Bob', 21, NULL),
(3, 'Charlie', NULL, 92.0);

In diesem Beispiel wissen wir nicht, welche Note Bob hat oder wie alt Charlie ist. Anstatt zu raten oder falsche Informationen einzugeben, verwenden wir NULL.

Erstellen einer Tabelle ohne NULL-Werte

Was ist, wenn wir sicherstellen möchten, dass bestimmte Spalten immer einen Wert haben? Dann kommt die NOT NULL-Einschränkung ins Spiel. Es ist wie wenn Sie Ihren Schülern sagen: "Keine Ausreden für das Nichteinreichen der Hausaufgaben!"

Lassen Sie uns eine Tabelle erstellen, bei der alle Felder einen Wert haben müssen:

CREATE TABLE employees (
id INT PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
hire_date DATE NOT NULL
);

In dieser Tabelle hat jede Spalte die NOT NULL-Einschränkung. Wenn wir versuchen, eine Zeile ohne alle Werte einzufügen, wird MySQL höflicherweise unsere Anfrage ablehnen und einen Fehler werfen.

-- Dies wird funktionieren
INSERT INTO employees VALUES (1, 'John', 'Doe', '[email protected]', '2023-01-15');

-- Dies wird fehlschlagen
INSERT INTO employees (id, first_name, last_name) VALUES (2, 'Jane', 'Smith');

Der zweite Eintrag wird fehlschlagen, weil wir keine Werte für email und hire_date angegeben haben, die NOT NULL-Felder sind.

Aktualisieren von NULL-Werten in einer Tabelle

Manchmal möchten wir möglicherweise NULL-Werte in unserer Tabelle aktualisieren. Vielleicht haben wir finalmente Charlies Alter aus unserem früheren Beispiel herausgefunden. So können wir das tun:

UPDATE students SET age = 22 WHERE name = 'Charlie';

Aber was ist, wenn wir einen Wert auf NULL setzen möchten? Wir können das auch, solange die Spalte NULL-Werte zulässt:

UPDATE students SET grade = NULL WHERE name = 'Alice';

Denken Sie daran, dass Sie eine NOT NULL-Spalte nicht auf NULL setzen können. Es ist wie versucht, Permanentmarker zu löschen – es funktioniert einfach nicht!

Löschen von Einträgen mit NULL-Werten

Manchmal möchten wir möglicherweise Einträge entfernen, die NULL-Werte in bestimmten Spalten haben. So können wir das tun:

DELETE FROM students WHERE grade IS NULL;

Beachten Sie, dass wir IS NULL anstelle von = NULL verwenden. Dies liegt daran, dass NULL kein Wert ist, daher können wir den Gleichheitsoperator nicht mit ihm verwenden. Es ist eines der Kuriositäten, die NULL besonders machen!

NULL-Werte in einem.Client-Programm

Wenn Sie mit NULL-Werten in einem Client-Programm (wie einem PHP-Skript, das sich mit MySQL verbindet) arbeiten, ist es wichtig, sie korrekt zu behandeln. Hier ist ein einfaches PHP-Beispiel:

<?php
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";

// Verbindung herstellen
$conn = new mysqli($servername, $username, $password, $dbname);

// Verbindung überprüfen
if ($conn->connect_error) {
die("Verbindung fehlgeschlagen: " . $conn->connect_error);
}

$sql = "SELECT * FROM students";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "Name: " . $row["name"]. " - Alter: " .
($row["age"] === NULL ? "Unbekannt" : $row["age"]) .
" - Note: " . ($row["grade"] === NULL ? "Nicht bewertet" : $row["grade"]) . "<br>";
}
} else {
echo "0 Ergebnisse";
}
$conn->close();
?>

In diesem Skript verwenden wir den bedingten Operator, um zu überprüfen, ob das Alter oder die Note NULL ist, und显示 "Unbekannt" oder "Nicht bewertet" respectively.

Schlussfolgerung

Und hier haben Sie es, Leute! Wir sind durch die Welt der NULL-Werte in MySQL gereist. Erinnern Sie sich, NULL ist nicht nichts – es ist das bekannte Unbekannte, das Fragezeichen in Ihrer Datenbank, das fehlende Puzzlestück. Nehmen Sie den NULL-Wert an, verstehen Sie ihn und verwenden Sie ihn weise in Ihren Datenbankabenteuern!

Bevor wir uns verabschieden, hier ist eine praktische Tabelle, die die Methoden zusammenfasst, die wir besprochen haben:

Methode Beschreibung Beispiel
Erstellen von NOT NULL-Spalten Stellt sicher, dass eine Spalte immer einen Wert hat CREATE TABLE employees (id INT PRIMARY KEY, name VARCHAR(50) NOT NULL);
Einfügen von NULL-Werten Fügt eine Zeile mit NULL-Werten ein (wo erlaubt) INSERT INTO students (id, name, age) VALUES (1, 'Alice', NULL);
Auf NULL setzen Setzt einen Wert auf NULL (wo erlaubt) UPDATE students SET grade = NULL WHERE name = 'Bob';
Von NULL aktualisieren Ersetzt NULL durch einen Wert UPDATE students SET age = 22 WHERE name = 'Charlie';
Löschen von NULL-Einträgen Entfernt Zeilen mit NULL in angegebenen Spalten DELETE FROM students WHERE grade IS NULL;
Auf NULL überprüfen Verwendet IS NULL oder IS NOT NULL in Abfragen SELECT * FROM students WHERE age IS NOT NULL;

Frohes Coden und möge Ihre Datenbanken immer NULL-aware sein!

Credits: Image by storyset