SQL - IS NOT NULL: Ein Anfängerguide
Hallo, zukünftige SQL-Zauberer! Heute tauchen wir in einen faszinierenden Aspekt von SQL ein, der ich gesehen habe, wie er viele Schüler über die Jahre hinweg zum Verzweifeln gebracht hat. Aber keine Sorge – bis zum Ende dieses Tutorials werdet ihr NULL-Werte wie ein Profi behandeln können!
Der SQL IS NOT NULL Operator
Lassen Sie uns mit den Grundlagen beginnen. In SQL ist NULL ein spezieller Wert (oder vielmehr eine fehlende Wert) der fehlende oder unbekannte Informationen darstellt. Es ist so, als ob du ein Formular ausfüllst und ein Feld leer lässt – das ist im Wesentlichen, was NULL in einer Datenbank ist.
Nun, hier wird es tricky: Du kannst nicht reguläre Vergleichsoperatoren wie = oder != mit NULL verwenden. Das ist, wo unser Held des Tages auftaucht – der IS NOT NULL Operator!
Grundlegende Syntax
Die grundlegende Syntax für IS NOT NULL lautet:
SELECT Spaltenname(n)
FROM Tabellenname
WHERE Spaltenname IS NOT NULL;
Lassen Sie uns das mit einem realen Beispiel durchbrechen. Stellen wir uns eine Tabelle namens students
mit den Spalten student_id
, name
und email
vor.
SELECT name, email
FROM students
WHERE email IS NOT NULL;
Diese Abfrage gibt alle Studierenden-Namen und E-Mails zurück, aber nur für Studierende, die eine E-Mail-Adresse in der Datenbank haben. Es ist, als ob du sagst: "Hey Datenbank, gib mir alle Studierenden, die wirklich ihr E-Mail-Feld ausgefüllt haben!"
Warum nicht '!=' oder '<>' verwenden?
Du könntest dich fragen: "Warum können wir nicht einfach email != NULL
verwenden?" Tolle Frage! In SQL repräsentiert NULL einen unbekannten Wert. Da er unbekannt ist, können wir ihn nicht mit etwas vergleichen – nicht einmal mit sich selbst! Es ist, als ob du versuchst, Äpfel mit ... gut, nichts zu vergleichen.
Sehen wir uns ein Beispiel an:
-- Dies wird nicht wie erwartet funktionieren
SELECT name, email
FROM students
WHERE email != NULL;
-- Dies ist der richtige Weg
SELECT name, email
FROM students
WHERE email IS NOT NULL;
Die erste Abfrage wird tatsächlich keine Ergebnisse zurückgeben, unabhängig von den Daten in deiner Tabelle. Die zweite Abfrage gibt alle Zeilen zurück, bei denen die E-Mail einen Wert hat.
IS NOT NULL mit COUNT() Funktion
Nun, da wir die Grundlagen verstehen, schauen wir uns an, wie IS NOT NULL mit anderen SQL-Funktionen wie COUNT() verwendet werden kann.
Zählen von Nicht-NULL Werten
Die COUNT()-Funktion wird verwendet, um die Anzahl der Zeilen zu zählen, die einem bestimmten Kriterium entsprechen. Wenn sie mit IS NOT NULL kombiniert wird, kann sie uns sagen, wie viele Zeilen einen Wert in einer bestimmten Spalte haben.
SELECT COUNT(*) AS total_students,
COUNT(email) AS students_with_email
FROM students;
In dieser Abfrage zählt COUNT(*)
alle Zeilen, während COUNT(email)
nur Zeilen zählt, bei denen die E-Mail nicht NULL ist. Es ist ein schneller Weg, um zu sehen, wie vollständig deine Daten sind!
Prozentsatzberechnungen
Wir können dies einen Schritt weiter gehen und den Prozentsatz der Studierenden berechnen, die ihre E-Mail-Adresse angegeben haben:
SELECT
COUNT(*) AS total_students,
COUNT(email) AS students_with_email,
(COUNT(email) * 100.0 / COUNT(*)) AS email_percentage
FROM students;
Diese Abfrage zählt nicht nur die Gesamtzahl der Studierenden und diejenigen mit E-Mails, sondern berechnet auch den Prozentsatz der Studierenden, die ihre E-Mail-Adresse angegeben haben. Es ist, als ob du die Anwesenheit prüfst und herausfindest, wer seine Hausaufgaben gemacht hat!
IS NOT NULL mit DELETE Anweisung
Manchmal müssen wir unsere Datenbank bereinigen, indem wir Zeilen mit fehlenden Daten entfernen. Hier kommt IS NOT NULL mit dem DELETE Statement sehr gelegen.
Grundlegendes DELETE mit IS NOT NULL
Hier ist, wie du alle Zeilen löschen könntest, bei denen eine bestimmte Spalte NULL ist:
DELETE FROM students
WHERE phone_number IS NULL;
Diese Abfrage würde alle Studierenden-Datensätze entfernen, bei denen die Telefonnummer nicht angegeben ist. Es ist, als ob du alle leeren Zeilen in deinem Adressbuch radierst.
Kombinieren von Bedingungen
Wir können IS NOT NULL auch mit anderen Bedingungen kombinieren:
DELETE FROM students
WHERE graduation_year IS NULL
AND enrollment_date < '2020-01-01';
Diese Abfrage löscht Datensätze von Studierenden, die kein Abschlussjahr haben und vor 2020 immatrikuliert wurden. Es ist ein Weg, alte, unvollständige Datensätze zu bereinigen.
IS NOT NULL mit UPDATE Anweisung
Schließlich schauen wir uns an, wie IS NOT NULL mit UPDATE-Anweisungen verwendet werden kann, um vorhandene Daten zu ändern.
Aktualisieren von Nicht-NULL Werten
Angenommen, wir möchten alle E-Mail-Adressen, die nicht NULL sind, in Kleinbuchstaben umwandeln:
UPDATE students
SET email = LOWER(email)
WHERE email IS NOT NULL;
Diese Abfrage ändert alle vorhandenen E-Mail-Adressen in Kleinbuchstaben, aber nur wenn sie nicht NULL sind. Es ist, als ob du durch deine Kontaktliste gehst und sicherstellst, dass alle E-Mail-Adressen konsistent formatiert sind.
Bedingte Aktualisierungen
Wir können IS NOT NULL auch in komplexeren UPDATE-Anweisungen verwenden:
UPDATE students
SET status = 'Active'
WHERE enrollment_date IS NOT NULL
AND graduation_date IS NULL;
Diese Abfrage setzt den Status auf 'Active' für alle Studierenden, die ein Einschreibungsdatum haben, aber kein Abschlussdatum. Es ist ein Weg, Studierendenstatus automatisch basierend auf den vorhandenen Informationen zu aktualisieren.
Fazit
Und da habt ihr es, Leute! Wir haben die Welt von IS NOT NULL durchquert und seine Verwendung in SELECT-, COUNT-, DELETE- und UPDATE-Anweisungen erkundet. Bedenkt, dass das korrekte Handling von NULL-Werten entscheidend in der Datenbankverwaltung ist. Es ist der Unterschied zwischen genauen Ergebnissen und ... gut, NULL-Ergebnissen!
Hier ist eine schnelle Referenztabelle der Methoden, die wir behandelt haben:
Operation | Beispiel |
---|---|
SELECT | SELECT * FROM Tabelle WHERE Spalte IS NOT NULL |
COUNT | SELECT COUNT(Spalte) FROM Tabelle |
DELETE | DELETE FROM Tabelle WHERE Spalte IS NULL |
UPDATE | UPDATE Tabelle SET Spalte = Wert WHERE andere_Spalte IS NOT NULL |
Übt diese Abfragen, spielt mit ihnen herum, und bald werdet ihr feststellen, dass das Handling von NULL-Werten zur zweiten Natur wird. Weiter codieren, weiter lernen und denken Sie daran – in der Welt der Datenbanken kann manchmal nichts (NULL) alles bedeuten!
Credits: Image by storyset