Heim  >  Artikel  >  Datenbank  >  Beim Umgang mit Null in MySQL sind zwei Fallstricke zu beachten.

Beim Umgang mit Null in MySQL sind zwei Fallstricke zu beachten.

黄舟
黄舟Original
2017-02-21 10:29:171058Durchsuche



Zusammenfassung: Als MySQL-Datenbankadministratoren müssen wir oft gegen Null kämpfen. Es gibt jedoch zwei große Fallstricke, auf die Sie achten müssen.

MySQL-Datenbank ist eine Open-Source-Datenbank, die auf strukturierten Daten basiert. SQL-Anweisungen sind die Kernsprache in der MySQL-Datenbank. Beim Ausführen von SQL-Anweisungen in einer MySQL-Datenbank müssen Sie jedoch auf zwei Fallstricke achten.

Falle 1: Ein Nullwert ist nicht unbedingt null

Ein Nullwert ist ein spezielles Feld. In der MySQL-Datenbank stellen Nullwerte in verschiedenen Situationen häufig unterschiedliche Bedeutungen dar. Dies ist eine Funktion der MySQL-Datenbank. In gewöhnlichen Feldern (Zeichendaten) stellt beispielsweise ein Nullwert einen Nullwert dar. Wenn Sie jedoch einen Nullwert in ein Feld vom Typ TimesTamp einfügen, ist der Nullwert nicht unbedingt null. Was passiert zu diesem Zeitpunkt (wie unten gezeigt)?

Beim Umgang mit Null in MySQL sind zwei Fallstricke zu beachten.

Ich habe zuerst eine Tabelle erstellt. In dieser Tabelle gibt es zwei Felder: User_id (der Datentyp ist int), Date (der Datentyp ist TimesTamp). Fügen Sie nun einen Datensatz in diese Tabelle ein, in dem ein NULL-Wert in das Feld Datum eingefügt wird. Wenn wir jedoch eine Abfrage durchführen, zeigt das Ergebnis die aktuelle Zeit an, zu der der Datensatz eingefügt wurde. Was ist los? Tatsächlich ist dies eine Falle, die häufig beim Ausführen von SQL-Anweisungen in einer MySQL-Datenbank auftritt: Ein Nullwert ist nicht unbedingt null. Während des Vorgangs ist klar, dass ein Nullwert eingefügt wird, das endgültige Abfrageergebnis ist jedoch kein Nullwert.

In der MySQL-Datenbank stellt NULL für einige spezielle Spaltentypen eine besondere Bedeutung dar, nicht nur einen Nullwert. Bei diesen speziellen Kolumnentypen gibt es vor allem zwei Dinge, die die Leser beachten sollten. Einer davon ist der oben erwähnte TimesTamp-Datentyp. Wenn Sie in eine Spalte dieses Datentyps einen Nullwert einfügen, stellt dieser die aktuelle Zeit des Systems dar. Die andere ist eine Spalte mit dem auto_increment-Attribut. Wenn Sie einen Nullwert in die Spalte dieses Attributs einfügen, fügt das System eine Folge positiver Ganzzahlen ein. Wenn Nulldaten in eine Spalte mit anderen Datentypen eingefügt werden, beispielsweise Zeichendaten, wird ein Nullwert eingefügt.

Falle 2: Der Nullwert ist nicht unbedingt gleich dem Nullzeichen

Ist in MySQL der Nullwert (Null) dasselbe wie das Nullzeichen ('')? . Bitte schauen Sie sich die Demonstration unten an.

Beim Umgang mit Null in MySQL sind zwei Fallstricke zu beachten.

Fügen Sie in derselben Datenbanktabelle gleichzeitig Nullwertdaten und Nullzeichendaten ein und verwenden Sie dann die Select-Anweisung zur Abfrage. Das endgültig angezeigte Ergebnis ist in der Abbildung oben dargestellt. Offensichtlich sind die angezeigten Ergebnisse unterschiedlich. Aus diesem Ergebnis ist ersichtlich, dass der Nullwert nicht dem Nullzeichen entspricht. Dies ist die zweite Falle, die beim Ausführen von SQL-Anweisungen in MySQL auftritt. In der Praxis haben Nulldaten und Nullzeichen oft unterschiedliche Bedeutungen. Datenbankadministratoren können Entscheidungen basierend auf den tatsächlichen Anforderungen treffen.


Für Felder wie Telefonnummern können sie standardmäßig auf einen Nullwert gesetzt werden (was anzeigt, dass die Telefonnummer des anderen Teilnehmers überhaupt nicht bekannt ist) oder auf ein leeres Zeichen gesetzt werden (was anzeigt, dass die Nummer später gelöscht wurde). usw. Da sie in der Datenbank unterschiedlich dargestellt werden, müssen Datenbankadministratoren sie unterschiedlich behandeln. Der Autor verwendet lieber Nullwerte als Nullzeichen. Dies liegt hauptsächlich daran, dass es für den Datentyp Nullwert mehrere Sonderoperationszeichen gibt. Wenn ein Feld ein Nullzeichen enthält, verwendet die Datenbank stattdessen den Feldnamen. Wenn dagegen ein Nullwert eingefügt wird, wird NULL direkt angezeigt. Dies unterscheidet sich auch von der Darstellung anderer Datenbanken.

Eines davon sind die Schlüsselwörter IS NULL und IS NOT NULL. Wenn Sie feststellen möchten, ob ein Feld Daten mit Nullwerten enthält, müssen Sie spezielle Schlüsselwörter verwenden. Ersteres bedeutet, dass dieses Feld leer ist, und letzteres bedeutet, dass dieses Feld nicht leer ist. Diese beiden Schlüsselwörter sind in den Abfragebedingungen der Select-Anweisung sehr nützlich. Wenn Sie alle Benutzer abfragen müssen, deren Telefonnummern leer sind (und diese ihre Telefonnummerninformationen ergänzen müssen), können Sie den Abfragebedingungen das Schlüsselwort is not null hinzufügen.

Beim Umgang mit Null in MySQL sind zwei Fallstricke zu beachten.

Die zweite sind statistische Funktionen wie Count, die auch spezielle Anwendungen für Nullwerte haben. Wenn Sie nun die Anzahl der Benutzer mit Telefonnummern in der Benutzerinformationstabelle zählen müssen, können Sie die Zählfunktion verwenden und die Telefonnummer als Parameter verwenden. Denn während des statistischen Prozesses ignoriert diese Funktion automatisch Nullwertdaten. Zu diesem Zeitpunkt werden die Benutzerinformationen mit Telefonnummern gezählt. Wenn Daten mit Nullzeichen verwendet werden, zählt diese Funktion diese. Wie in der folgenden Abbildung dargestellt, ist das Ergebnis der Systemstatistik beim Zählen der beiden gerade erstellten Datensätze 1 und nicht 2. Es ist ersichtlich, dass das System Nullwertdaten automatisch ignoriert.

Die oben genannten Fallstricke sind beim Umgang mit Null in MySQL zu beachten. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn