MySQL IS NULL & IS NOT NULL mit Beispielen

โšก Intelligente Zusammenfassung

MySQL Die Vergleichskriterien IS NULL und IS NOT NULL prรผfen, ob eine Spalte einen fehlenden Wert enthรคlt. NULL kennzeichnet fehlende Daten, verhรคlt sich anders als Null oder eine leere Zeichenkette und erfordert spezielle Operatoren fรผr eine zuverlรคssige Filterung.

  • ๐Ÿงฉ Kerndefinition: NULL ist ein Platzhalter fรผr nicht vorhandene Daten. Es ist kein Datentyp und auch nicht die Zahl Null.
  • โž— Arithmetisches Verhalten: Jeder arithmetische Ausdruck, der NULL enthรคlt, gibt NULL zurรผck, daher wird 69 + NULL zu NULL ausgewertet und nicht zu 69.
  • ๐Ÿ“Š Gesamtauswirkung: COUNT(Spalte) und andere Aggregatfunktionen รผberspringen NULL-Zeilen, wรคhrend COUNT(*) weiterhin jede Zeile in der Tabelle zรคhlt.
  • ๐Ÿšซ NOT NULL-Bedingung: Durch die Deklaration einer Spalte als NOT NULL werden alle Einfรผgevorgรคnge abgelehnt, die einen Wert auslassen. Dies schรผtzt Pflichtfelder wie beispielsweise Kennungen.
  • ๐Ÿ” Korrekte Filterung: IS NULL und IS NOT NULL sind die einzigen zuverlรคssigen Tests, da der Gleichheitsoperator niemals auf einen NULL-Wert zutrifft.
  • ๏ธ Dreiwertige Logik: Vergleiche mit NULL geben UNKNOWN zurรผck, daher liefert SELECT NULL = NULL NULL anstelle von TRUE.

MySQL IST NULL und IST NICHT NULL

In SQL ist NULL sowohl ein Wert als auch ein Schlรผsselwort. Schauen wir uns zunรคchst den Wert NULL an.

MySQL IST NULL & IST NICHT NULL

Was ist NULL in MySQL?

In einfachen Worten, NULL ist ein Platzhalter fรผr Daten, die nicht existieren.Bei Einfรผgeoperationen in Tabellen kann es vorkommen, dass einige Feldwerte nicht verfรผgbar sind.

Um den Anforderungen echter relationaler Datenbankverwaltungssysteme gerecht zu werden, MySQL Verwendet NULL als Platzhalter fรผr die nicht รผbermittelten Werte. Der folgende Screenshot zeigt, wie NULL-Werte in einer Datenbanktabelle aussehen.

Null als Wert

Beachten Sie, dass die leeren Zellen mit NULL gekennzeichnet sind, nicht mit leerem Text oder Null. Bevor wir fortfahren, sehen wir uns einige Grundlagen zu NULL an.

  • NULL ist kein Datentyp โ€“ Dies bedeutet, dass es nicht als โ€žintโ€œ, โ€ždateโ€œ oder ein anderer definierter Datentyp erkannt wird.
  • Rechenoperationen Beteiligung NULL immer NULL zurรผckgebenZum Beispiel: 69 + NULL = NULL.
  • Most Aggregatfunktionen Zeilen mit NULL-Werten ignorierenDie einzige Ausnahme bildet COUNT(*), das jede Zeile unabhรคngig von NULL zรคhlt.

Wie Aggregatfunktionen mit NULL-Werten umgehen

Diese Regel รคndert die Antworten, die Berichtsabfragen liefern. Lassen Sie uns dies beweisen. Beginnen wir mit dem aktuellen Inhalt der Mitgliedertabelle.

SELECT * FROM `members`;

Die Ausfรผhrung des obigen Skripts fรผhrt zu den folgenden Ergebnissen.

membership_ number full_ names gender date_of_ birth physical_ address postal_ address contact_ number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345rm@tstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL
5 Leonard Hofstadter MaleNULL Woodcrest NULL 845738767 NULL
6 Sheldon Cooper Male NULL Woodcrest NULL 976736763 NULL
7 Rajesh Koothrappali Male NULL Woodcrest NULL 938867763 NULL
8 Leslie Winkle Male 14-02-1984 Woodcrest NULL 987636553 NULL
9 Howard Wolowitz Male 24-08-1981 SouthPark P.O. Box 4563 987786553 lwolowitz[at]email.me

Die hervorgehobene Spalte โ€žKontaktnummerโ€œ enthรคlt insgesamt neun Zeilen, von denen zwei NULL sind. Wir zรคhlen nun alle Mitglieder, die ihre Kontaktnummer aktualisiert haben.

SELECT COUNT(contact_number) FROM `members`;

Die Ausfรผhrung der obigen Abfrage liefert die folgenden Ergebnisse.

COUNT(contact_number)
7

Hinweis: Die Antwort ist 7 und nicht 9, da die beiden NULL-Werte nicht berรผcksichtigt wurden. Die Ausfรผhrung von COUNT(*) auf derselben Tabelle wรผrde 9 zurรผckgeben, da COUNT(*) Zeilen und nicht Werte zรคhlt.

KEINE NULL-Werte

Ein sichererer Ansatz besteht darin, zu verhindern, dass NULL-Werte in Pflichtfelder gelangen. Genau dafรผr ist die NOT NULL-Bedingung zustรคndig.

Was ist das NICHT? Operator?

Der logische Operator NOT dient zum Testen boolescher Bedingungen und gibt โ€žwahrโ€œ zurรผck, wenn die Bedingung โ€žfalschโ€œ ist. Der Operator NOT gibt โ€žfalschโ€œ zurรผck, wenn die zu testende Bedingung โ€žwahrโ€œ ist.

Anforderungen NICHT Operator Ergebnis
richtig falsch
falsch richtig

Warum sollte man NOT NULL verwenden?

Es gibt Fรคlle, in denen wir Berechnungen mit einem Abfrageergebnis durchfรผhren und die Werte zurรผckgeben mรผssen. Jede arithmetische Operation auf einer Spalte, die einen NULL-Wert enthรคlt, liefert ein NULL-Ergebnis. Um solche Situationen zu vermeiden, kรถnnen wir die NOT NULL-Klausel verwenden, um die Ergebnisse, mit denen unsere Daten verarbeitet werden, einzuschrรคnken.

Erstellen einer Tabelle mit einer NOT NULL-Spalte

Angenommen, wir mรถchten eine Tabelle mit bestimmten Feldern erstellen, die beim Einfรผgen neuer Zeilen immer mit Werten gefรผllt werden sollen. Wir kรถnnen beim Erstellen der Tabelle die NOT NULL-Klausel fรผr ein bestimmtes Feld verwenden.

Das unten gezeigte Beispiel erstellt eine neue Tabelle, die Mitarbeiterdaten enthรคlt. Die Mitarbeiternummer muss immer angegeben werden.

CREATE TABLE `employees`(
  employee_number int NOT NULL,
  full_names varchar(255) ,
  gender varchar(6)
);

Versuchen wir nun, einen neuen Datensatz einzufรผgen, ohne die Mitarbeiternummer anzugeben, und schauen wir, was passiert.

INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');

Ausfรผhren des obigen Skripts in MySQL Werkbank fรผhrt zu folgendem Fehler, da die Pflichtspalte ausgelassen wurde.

KEINE NULL-Werte

Schlรผsselwรถrter IS NULL und IS NOT NULL

Die Einschrรคnkung verhindert die Eingabe neuer NULL-Werte. Um mit bereits vorhandenen NULL-Werten zu arbeiten, wird NULL als Schlรผsselwort verwendet. Die Syntax lautet wie folgt.

column_name IS NULL
column_name IS NOT NULL

HIER KLICKEN

  • "IST NULL" ist das Schlรผsselwort, das den booleschen Vergleich durchfรผhrt. Es gibt true zurรผck, wenn der angegebene Wert NULL ist, und false, wenn der angegebene Wert nicht NULL ist.
  • โ€žIST NICHT NULLโ€œ ist das Schlรผsselwort, das den umgekehrten Vergleich durchfรผhrt. Es gibt true zurรผck, wenn der angegebene Wert nicht NULL ist, und false, wenn der angegebene Wert NULL ist.

Betrachten wir ein praktisches Beispiel, das das Schlรผsselwort IS NOT NULL verwendet, um alle Zeilen zu eliminieren, die NULL-Werte in einer Spalte enthalten.

Angenommen, wir benรถtigen anhand der obigen Mitgliedertabelle die Details der Mitglieder, deren Telefonnummer nicht NULL ist. Wir kรถnnen eine Abfrage wie die folgende ausfรผhren.

SELECT * FROM `members` WHERE contact_number IS NOT NULL;

Die Ausfรผhrung der obigen Abfrage liefert nur die sieben Datensรคtze zurรผck, in denen die Kontaktnummer vorhanden ist, was dem COUNT-Ergebnis aus dem vorherigen Abschnitt entspricht.

Nehmen wir nun an, wir mรถchten das Gegenteil: die Mitgliedsdatensรคtze, bei denen die Telefonnummer fehlt. Wir kรถnnen die folgende Abfrage verwenden.

SELECT * FROM `members` WHERE contact_number IS NULL;

Die Ausfรผhrung der obigen Abfrage liefert die beiden Mitgliedsdatensรคtze, deren Kontaktnummer NULL ist.

membership_ number full_names gender date_of_birth physical_address postal_address contact_ number email
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

Warnung: Eine Bedingung wie WHERE contact_number = NULL liefert ein leeres Ergebnis, obwohl NULL-Werte vorhanden sind. Der Gleichheitsoperator kann niemals auf NULL zugreifen, daher ist IS NULL der einzig korrekte Test.

Vergleich von NULL-Werten mit dreiwertiger Logik

Dreiwertige Logik โ€“ Die Durchfรผhrung boolescher Operationen auf Bedingungen, die NULL beinhalten, kann Folgendes zurรผckgeben โ€žUnbekanntโ€œ, โ€žWahrโ€œ oder โ€žFalschโ€œ.

Verwendung des Schlรผsselworts โ€žIS NULLโ€œ bei Vergleichsoperationen mit NULL Rรผckgabe was immer dies auch sein sollte. or falschDie Verwendung der anderen Vergleichsoperatoren gibt Folgendes zurรผck โ€žUnbekanntโ€œ (NULL)Die folgende Tabelle vergleicht jeden Ausdruck nebeneinander.

Ausdruck Lรถsung Bedeutung
SELECT 5 = 5; 1 TRUE
SELECT NULL = NULL; NULL UNKNOWN
SELECT 5 > 5; 0 FALSCH
SELECT NULL > NULL; NULL UNKNOWN
SELECT 5 IS NULL; 0 FALSCH
SELECT NULL IS NULL; 1 TRUE

Vergleiche die Zahl fรผnf mit sich selbst und wiederhole dann den Vorgang mit NULL.

SELECT 5 =5;
SELECT NULL = NULL;
5 =5 NULL = NULL
1 NULL

Das erste Ergebnis ist 1 (WAHR). Das zweite ist NULL, weil MySQL Man kann nicht sagen, dass ein unbekannter Wert gleich einem anderen unbekannten Wert ist. Verwenden Sie nun das Schlรผsselwort IS NULL fรผr dieselben Werte.

SELECT 5 IS NULL;
SELECT NULL IS NULL;
5 IS NULL NULL IS NULL
0 1

Diesmal sind die Antworten eindeutig: 0 (FALSCH) und 1 (WAHR). Nur die Schlรผsselwรถrter IS NULL und IS NOT NULL liefern ein eindeutiges Ergebnis, wenn NULL vorkommt.

Hรคufig gestellte Fragen

Null ist eine Zahl und eine leere Zeichenkette ist Text, daher erfรผllen beide die Kriterien fรผr Gleichheitstests. NULL bedeutet, dass kein Wert angegeben wurde, weshalb nur auf IS NULL und IS NOT NULL reagiert wird.

IFNULL(Spalte, 'N/A') gibt den Ersatzwert zurรผck, wenn die Spalte NULL ist. COALESCE(a, b, c) gibt das erste Argument zurรผck, das nicht NULL ist. Beide sind nรผtzlich innerhalb von MySQL Funktionen und Berichte.

Nein. MySQL Die Anweisung NOT NULL wird automatisch auf jede Primรคrschlรผsselspalte angewendet, da ein Schlรผssel, der eine Zeile identifiziert, nicht fehlen darf. Ein UNIQUE-Index verhรคlt sich anders und erlaubt mehrere NULL-Werte.

In der Regel ja. KI-Assistenten in Tools wie beispielsweise MySQL Werkbank โ€žMitglieder ohne Telefonnummerโ€œ in eine WHERE-Spalte IS NULL-Klausel umwandeln. RevBeachten Sie den Filter, da ein Gleichheitstest mit NULL stillschweigend nichts zurรผckgibt.

Oft ja. KI-Prรผfwerkzeuge kennzeichnen Fehler wie z. B. = NULL-Vergleiche, a SELECT Dabei wird der Mittelwert einer Spalte mit NULL-Werten berechnet und Listen, die NULL-Werte enthalten, werden nicht berรผcksichtigt. Die endgรผltige Beurteilung obliegt der Person, die die Daten kennt.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: