Einige häufige Fehler mit MySQL null

Einige häufige Fehler mit MySQL null

Laut Nullwerten bedeutet der Wert Null in MySQL lediglich, dass keine Daten vorhanden sind. Der Nullwert unterscheidet sich vom Nullwert einiger Typen. Beispielsweise ist der Nullwert des Typs int 0 und der Nullwert des Strings ist "", aber sie enthalten trotzdem Daten und nicht Null.

Wenn wir Daten speichern, erfassen wir die vorübergehend nicht verfügbaren Daten üblicherweise als Null, was bedeutet, dass wir derzeit keine gültigen Informationen bereitstellen können.

Bei der Verwendung von null müssen wir jedoch auf einige Probleme achten. Die MySQL-Dokumentation erklärt dies wie folgt: Probleme mit null

Fehleranfällige Punkte bei der Verwendung von Null

Nachfolgend erläutere ich die von MySQL-Mitarbeitern angegebenen fehleranfälligen Punkte zu Null.

Personen, die mit MySQL nicht vertraut sind, können leicht Null- und Nullwerte verwechseln.

Das Konzept des NULL-Wertes ist eine häufige Quelle der Verwirrung für SQL-Neulinge

Beispielsweise sind die durch die folgenden beiden SQL-Anweisungen generierten Daten unabhängig

mysql> INSERT INTO my_table (Telefon) VALUES (NULL);
mysql> INSERT INTO my_table (Telefon) VALUES ('');

Die erste SQL-Anweisung gibt lediglich an, dass die Telefonnummer im Moment nicht bekannt ist, und die zweite Anweisung gibt an, dass die Telefonnummer bekannt und als '' aufgezeichnet ist.

Beide Anweisungen fügen einen Wert in die Telefonspalte ein, aber die erste fügt einen NULL-Wert und die zweite eine leere Zeichenfolge ein. Die Bedeutung der ersten kann als „Telefonnummer ist nicht bekannt“ angesehen werden und die Bedeutung der zweiten als „die Person hat bekanntermaßen kein Telefon und somit auch keine Telefonnummer.“

Die logische Beurteilung von Null sollte separat behandelt werden

Um zu bestimmen, ob ein Wert null ist, müssen Sie die spezielle Syntax IS NULL , IS NOT NULL , IFNULL() verwenden.

Zur Unterstützung der NULL-Verarbeitung können Sie die Operatoren IS NULL und IS NOT NULL sowie die Funktion IFNULL() verwenden.

Wenn Sie = verwenden, um zu beurteilen, wird es immer falsch sein

In SQL ist der NULL-Wert im Vergleich zu einem anderen Wert niemals wahr, auch nicht zu NULL

Um nach Spaltenwerten zu suchen, die NULL sind, können Sie keinen expr = NULL-Test verwenden. Die folgende Anweisung gibt keine Zeilen zurück, da expr = NULL nie wahr ist

Wenn Sie es beispielsweise so schreiben, wird das Ergebnis des Where-Tests niemals „true“ sein:

Wählen Sie * aus meiner_Tabelle, wobei Telefon = NULL ist.

Wenn Sie Null und andere Daten für Berechnungen verwenden, ist das Ergebnis immer Null, es sei denn, die MySQL-Dokumentation enthält zusätzliche spezielle Anweisungen für bestimmte Vorgänge.

Ein Ausdruck, der NULL enthält, erzeugt immer einen NULL-Wert, sofern in der Dokumentation der im Ausdruck enthaltenen Operatoren und Funktionen nichts anderes angegeben ist.

Zum Beispiel:

mysql> SELECT NULL, 1+NULL, CONCAT('Unsichtbar',NULL);
+------+--------+--------------------------+
| NULL | 1+NULL | CONCAT('Unsichtbar',NULL) |
+------+--------+--------------------------+
| NULL | NULL | NULL |
+------+--------+--------------------------+
1 Zeile im Satz (0,00 Sek.)

Wenn Sie also eine logische Beurteilung von Null vornehmen möchten, verwenden Sie einfach IS NULL

Um nach NULL-Werten zu suchen, müssen Sie den IS NULL-Test verwenden

Das Indizieren von Spalten mit Nullwerten erfordert zusätzliche Vorwegnahme versteckter Details

Nur die Speicher-Engines InnoDB, MyISAM und MEMORY unterstützen die Indizierung von Spalten mit Nullwerten.

Sie können einer Spalte, die NULL-Werte haben kann, einen Index hinzufügen, wenn Sie die Speicher-Engine MyISAM, InnoDB oder MEMORY verwenden. Andernfalls müssen Sie eine indizierte Spalte als NOT NULL deklarieren und können in die Spalte keinen NULL-Wert einfügen.

Die Länge des Indexes ist um 1 größer als der normale Index, was bedeutet, dass er etwas mehr Speicher verbraucht.

Aufgrund des Schlüsselspeicherformats ist die Schlüssellänge für eine Spalte, die NULL sein kann, um eins größer als für eine NOT NULL-Spalte.

Gruppierung, Deduplizierung und Sortierung von Nullwerten werden speziell behandelt

Im Gegensatz zur obigen Aussage, dass =null immer falsch ist, wird null als gleich betrachtet.

Bei der Verwendung von DISTINCT, GROUP BY oder ORDER BY werden alle NULL-Werte als gleich betrachtet.

Das Sortieren von Nullwerten wird gesondert behandelt.

Nullwerte werden entweder zuerst oder zuletzt sortiert.

Bei der Verwendung von ORDER BY werden NULL-Werte zuerst angezeigt, oder zuletzt, wenn Sie DESC angeben, um in absteigender Reihenfolge zu sortieren.

Null wird bei Aggregationsvorgängen ignoriert

Aggregatfunktionen (Gruppenfunktionen) wie COUNT(), MIN() und SUM() ignorieren NULL-Werte

Beispielsweise zählt count(*) keine Daten mit einem Nullwert.

Eine Ausnahme hiervon bildet COUNT(*), das Zeilen und nicht einzelne Spaltenwerte zählt. Die folgende Anweisung erzeugt beispielsweise zwei Zählungen. Die erste ist eine Zählung der Zeilenanzahl in der Tabelle und die zweite eine Zählung der Anzahl der Nicht-NULL-Werte in der Spalte „Alter“:

mysql> SELECT COUNT(*), COUNT(Alter) FROM Person;

Oben sind einige häufige Fehler in MySQL null aufgeführt. Weitere Informationen zu MySQL null finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Warum sollten MySQL-Felder NOT NULL verwenden?
  • Ein kleines Problem mit Nullwerten in MySQL
  • Detaillierte Erklärung des Unterschieds zwischen MySQL null und nicht null und null und leerem Wert''''''''
  • Lösung für das MySQL IFNULL-Beurteilungsproblem
  • Unterscheiden Sie zwischen Nullwert und leerem Zeichen ('''') in MySQL
  • Detaillierte Erklärung zum Schreiben von MySQL ungleich null und gleich null
  • Mysql NULL verursachte die Grube
  • Zusammenfassung der Wissenspunkte im Zusammenhang mit Null (IFNULL, COALESCE und NULLIF) in MySQL
  • Detaillierte Erklärung der MySQL-Dreiwertelogik und NULL

<<:  Was Sie beim Schreiben selbstschließender XHTML-Tags beachten sollten

>>:  18 Killer-JavaScript-Einzeiler

Artikel empfehlen

Detaillierte Erläuterung der JS ES6-Codierungsstandards

Inhaltsverzeichnis 1. Umfang des Blocks 1.1. let ...

Zusammenfassung grundlegender SQL-Anweisungen in der MySQL-Datenbank

Dieser Artikel beschreibt anhand von Beispielen d...

So legen Sie den Standardwert eines MySQL-Felds fest

Inhaltsverzeichnis Vorwort: 1. Standardwertbezoge...

Unvollständige Lösung für die Verwendung von Eingabetyp=Textwert=str

Ich bin heute auf ein sehr seltsames Problem gesto...

Dieser Artikel hilft Ihnen, den Lebenszyklus in Vue zu verstehen

Inhaltsverzeichnis 1. vorErstellen & erstellt...

Ein kurzer Vortrag über JavaScript Sandbox

Vorwort: Apropos Sandboxen: Wir denken vielleicht...

Wissen Sie, welche Möglichkeiten es gibt, in Vue Routen zu überspringen?

Inhaltsverzeichnis Die erste Methode: Router-Link...

VMWare Linux MySQL 5.7.13 Installations- und Konfigurationstutorial

In diesem Artikel finden Sie das Tutorial zur Ins...

Tutorial zur Installation von MySQL 5.7.18 mit einem RPM-Paket

System: CentOS 7 RPM-Pakete: mysql-community-clie...

Machen Sie sich nicht die Mühe mit JavaScript, wenn es mit CSS geht

Vorwort Jede Anwendung, die in JavaScript geschri...

Detaillierte Erklärung der CSS-Stil-Kaskadierungsregeln

Der Syntaxstil der CSS-Stilregel ist die Grundein...