In diesem Artikel erfahren Sie mehr über NULL in MySQL

In diesem Artikel erfahren Sie mehr über NULL in MySQL

Vorwort

Ich weiß nicht, ob Sie schon einmal auf ein solches Problem gestoßen sind. Wenn wir die MySQL-Datenbank abfragen, lautet die Bedingung „Status!=1“. Theoretisch werden alle Ergebnisse abgefragt, die die Bedingung nicht erfüllen, aber das Seltsame ist, dass die Ergebnisse mit einem NULL-Wert nicht abgefragt werden können. Wir müssen die Bedingung oder den Status IS NULL hinzufügen. Lassen Sie uns in diesem Artikel NULL in MySQL untersuchen.

1 NULL in MySQL

Für MySQL ist NULL ein spezieller Wert.

NULL bedeutet unbekannt und unsicher. NULL ist nicht gleich einem beliebigen Wert (auch nicht sich selbst).

2 Länge belegt durch NULL

Die Länge von NULL in der Datenbank

mysql> wähle Länge(NULL), Länge(''), Länge('1');
+--------------+------------+----------+
| Länge(NULL) | Länge('') ​​| Länge('1') |
+--------------+------------+----------+
| NULL | 0 | 1 |
+--------------+------------+----------+

NULL-Spalten erfordern zusätzlichen Platz in der Zeile, um aufzuzeichnen, ob ihre Werte NULL sind.

Es ist ersichtlich, dass die Länge des leeren Werts '' 0 ist, was keinen Platz beansprucht; während die Länge von NULL NULL ist, was zusätzlichen Platz erfordert. Daher wird in einigen Entwicklungsspezifikationen empfohlen, das Datenbankfeld auf Nicht NULL zu setzen und den Standardwert '' oder 0 festzulegen.

3 Vergleich von NULL-Werten

IS NULL bestimmt, ob ein Zeichen leer ist und stellt kein leeres Zeichen oder 0 dar

Der SQL92-Standard besagt, dass die Bedingung !=NULL immer „False“ und Aggregatoperationen immer „0“ zurückgeben.

Natürlich können Sie SET ANSI_NULLS OFF in der Datenbank verwenden, um den Standardmodus auszuschalten, dies wird jedoch im Allgemeinen nicht empfohlen.

Um zu bestimmen, ob eine Zahl gleich NULL ist, können Sie daher nur IS NULL oder IS NOT NULL verwenden.

4 SQL verarbeitet NULL-Werte

MySQL stellt uns die Funktion IFNULL(expr1, expr2) zur Verfügung, mit der wir NULL in den Daten problemlos verarbeiten können.

IFNULL nimmt zwei Parameter an. Wenn das erste Argumentfeld nicht NULL ist, wird der Wert des ersten Felds zurückgegeben. Andernfalls gibt die IFNULL-Funktion den Wert des zweiten Arguments (den Standardwert) zurück.

wählen Sie IFNULL(status,0) von t_user;

5. Auswirkungen des NULL-Wertes auf die Abfragebedingungen

  • Operatoren wie =, < und > können nicht verwendet werden. Das Ergebnis arithmetischer Operationen mit NULL ist NULL (wenn der Status also NULL ist, zählt status!=1 nicht NULL).
  • Bei Verwendung der COUNT(expr)-Statistik werden Daten mit NULL-Werten in diesem Feld nicht gezählt.

6 Auswirkungen von NULL-Werten auf Indizes

Als Erstes ist zu beachten, dass es nicht unbedingt zu einem Indexfehler führt, wenn eine Datenspalte in MySQL NULL enthält.

MySQL kann Indizes für Spalten verwenden, die NULL enthalten

Die Verwendung allgemeiner Indizes, wie etwa normaler Indizes, zusammengesetzter Indizes und Volltextindizes, auf Feldern mit NULL-Werten führt nicht zur Ungültigkeit der Indizes. Bei Verwendung eines räumlichen Indexes darf die Spalte jedoch NICHT NULL sein.

7 Auswirkung des NULL-Wertes auf die Sortierung

Wenn beim Sortieren in ORDER BY ein NULL-Wert vorhanden ist, ist NULL der kleinste Wert. Bei der ASC-positiven Sortierung steht der NULL-Wert vorne.

Wenn wir beim Sortieren in positiver Reihenfolge NULL-Werte am Ende einfügen müssen, müssen wir IS NULL verwenden.

Wählen Sie * aus t_user, Sortierung nach Alter ist null, Alter; 
Oder wählen Sie * aus t_user, sortiert nach isnull(Name), Alter; 
# Entspricht „select * from (select name, age, (age is null) as isnull from t_user) as foo order by isnull, age“; 

8 Unterschied zwischen NULL und leerem Wert

NULL bedeutet, dass der NULL-Wert im Feld gespeichert wird, und ein leerer Wert bedeutet, dass ein leeres Zeichen ('') im Feld gespeichert wird.

1. Unterschied im belegten Raum

mysql> wähle Länge(NULL), Länge(''), Länge('1');
+--------------+------------+----------+
| Länge(NULL) | Länge('') ​​| Länge('1') |
+--------------+------------+----------+
| NULL | 0 | 1 |
+--------------+------------+----------+
1 Reihe im Set

Zusammenfassung: Aus dem Obigen können wir erkennen, dass die Länge des Nullwerts ('') 0 ist und daher keinen Platz einnimmt. Die Länge von NULL ist jedoch NULL und nimmt tatsächlich Platz ein. Siehe die folgende Erklärung.

NULL-Spalten erfordern zusätzlichen Platz in der Zeile, um aufzuzeichnen, ob ihre Werte NULL sind.

NULL-Spalten erfordern zusätzlichen Platz in der Zeile, um aufzuzeichnen, ob ihr Wert NULL ist.

Einfach ausgedrückt: Der leere Wert ist wie ein Vakuumbecher, in dem sich nichts befindet, während der NULL-Wert ein Becher voller Luft ist. Obwohl sie gleich aussehen, sind sie im Wesentlichen unterschiedlich.

Zusammenfassen

Dies ist das Ende dieses Artikels über NULL in MySQL. Weitere Informationen zu NULL in MySQL finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • MySQL-Prozesssteuerung: IF()-, IFNULL()-, NULLIF()-, ISNULL()-Funktionen
  • MySQL-Reihe von Erfahrungszusammenfassungen und Analyse-Tutorials zu NULL-Werten
  • mysql IS NULL mit Indexfallerklärung
  • MySql-Freigabe der Nullfunktionsnutzung
  • Speichern von NULL-Werten auf der Festplatte in MySQL

<<:  Was sind die Vorteile einer semantischen HTML-Struktur?

>>:  Methoden des adaptiven Webdesigns (gutes Zugriffserlebnis auf Mobiltelefonen)

Artikel empfehlen

XHTML-Tutorial für den Einstieg: Formular-Tags

<br />Formulare sind für Benutzer ein wichti...

So schreiben Sie ein MySQL-Sicherungsskript

Vorwort: Die Bedeutung einer Datenbanksicherung l...

Details zur Ereignisbindung reagieren

Inhaltsverzeichnis Ereignisbindung von Klassenkom...

So verwenden Sie die JSX-Syntax richtig in Vue

Inhaltsverzeichnis Vorwort Virtueller DOM Was ist...

Detailliertes Tutorial zur Installation von MySQL 8.0.20 auf CentOS7.8

1. MySQL-Software installieren Laden Sie das offi...

Detaillierte Analyse des Linux-Kernel-Makros container_of

1. Wie oben erwähnt Ich habe dieses Makro gesehen...

CSS3 zum Erzielen von Zeitleisteneffekten

Als ich kürzlich meinen Computer einschaltete, sa...

Detaillierte Erläuterung des MySQL-Indexprinzips und der Abfrageoptimierung

Inhaltsverzeichnis 1. Einleitung 1. Was ist ein I...

Detaillierte Erklärung zu Padding und Abkürzungen im CSS-Boxmodell

Wie oben gezeigt, sind Füllwerte zusammengesetzte...

Einige gängige CSS-Layouts (Zusammenfassung)

Zusammenfassung In diesem Artikel werden die folg...

Einfacher Webseitencode, der im NetEase-Blog verwendet wird

So verwenden Sie den Code im NetEase-Blog: Melden...