Ein kleines Problem mit Nullwerten in MySQL

Ein kleines Problem mit Nullwerten in MySQL

Heute habe ich beim Testen des Nullwertes ein kleines Problem festgestellt. Ich habe es hier aufgezeichnet. Ich frage mich, ob Sie es schon einmal erlebt haben.

Folgendes passiert: Wenn Sie die Werte in einer Tabelle filtern, müssen Sie die Spalte mit Alter = 2 entfernen und dann die verbleibenden Spalteninformationen anzeigen. Dieser Vorgang scheint relativ einfach zu sein. Ich verwende eine Tabelle, um den Vorgang zu simulieren:

CREATE TABLE `test` (
  `id` int(11) NICHT NULL AUTO_INCREMENT,
  `Alter` int(11) DEFAULT NULL,
  `score` varchar(20) NICHT NULL STANDARD '',
  Primärschlüssel (`id`),
  SCHLÜSSEL `idx_score` (`Punktzahl`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8

Die Tabellenstruktur ist wie oben. Die Felder „id“ und „score“ unterliegen beide der Einschränkung „not null“, das Feld „age“ unterliegt dieser Einschränkung jedoch nicht. Wir werden einige Daten wie folgt einfügen:

mysql:yeyztest 23:32:57>>Wählen Sie * aus Test;
+----+------+-------+
| ID | Alter | Punktzahl |
+----+------+-------+
| 1 | 1 | 5 |
| 2 | 2 | 10 |
| 5 | 5 | 25 |
| 8 | 8 | 40 |
| 9 | 2 | 45 |
| 10 | 5 | 50 |
| 11 | 8 | 55 |
+----+------+-------+
7 Zeilen im Satz (0,00 Sek.)

Der aktuelle Datensatz ist vollständig und jedes Feld hat einen Wert. Anschließend verwenden wir die folgende SQL-Anweisung, um den angegebenen Datensatz abzufragen:

Wählen Sie * aus dem Test, wo die ID ist! = 2;

Wir schauen uns die Ergebnisse an:

mysql:yeyztest 23:33:14>>Auswählen * aus Test, wo Alter!=2;
+----+------+-------+
| ID | Alter | Punktzahl |
+----+------+-------+
| 1 | 1 | 5 |
| 5 | 5 | 25 |
| 8 | 8 | 40 |
| 10 | 5 | 50 |
| 11 | 8 | 55 |
+----+------+-------+
5 Zeilen im Satz (0,00 Sek.)

An dieser Stelle fügen wir zwei Datensätze ein:

mysql:yeyztest 23:33:17>>in Test einfügen (ID, Score) Werte (12,60);
Abfrage OK, 1 Zeile betroffen (0,00 Sek.)

mysql:yeyztest 23:34:02>>in Test einfügen (ID, Score) Werte (13,65);
Abfrage OK, 1 Zeile betroffen (0,00 Sek.)

mysql:yeyztest 23:34:10>>Wählen Sie * aus Test;
+----+------+-------+
| ID | Alter | Punktzahl |
+----+------+-------+
| 1 | 1 | 5 |
| 2 | 2 | 10 |
| 5 | 5 | 25 |
| 8 | 8 | 40 |
| 9 | 2 | 45 |
| 10 | 5 | 50 |
| 11 | 8 | 55 |
| 12 | NULL | 60 |
| 13 | NULL | 65 |
+----+------+-------+
9 Zeilen im Satz (0,00 Sek.)

Verwenden Sie die obige Anweisung zur erneuten Abfrage. Die Ergebnisse werden wie folgt angezeigt:

mysql:yeyztest 23:34:15>>Wählen Sie * aus Test, wobei Alter! = 2;
+----+------+-------+
| ID | Alter | Punktzahl |
+----+------+-------+
| 1 | 1 | 5 |
| 5 | 5 | 25 |
| 8 | 8 | 40 |
| 10 | 5 | 50 |
| 11 | 8 | 55 |
+----+------+-------+
5 Zeilen im Satz (0,00 Sek.)

Das heißt: Wenn der Datensatz einen Nullwert enthält, verwenden Sie die umgekehrte Altersübereinstimmung! =2 reicht nicht aus, um die vollständigen Abfrageergebnisse zu erhalten, was offensichtlich nicht unseren Erwartungen entspricht.

Tatsächlich wurde dieses Problem bereits im vorherigen Artikel erwähnt. In einem Datensatz werden das Nullwertfeld und das allgemeine Feld nicht zusammen gespeichert. Das Nullwertfeld wird in der Nullwertliste gespeichert. Dies führt zu Nichtübereinstimmungen beim Abrufen. Dies ist ein relativ wichtiger Punkt und ich hoffe, er wird für alle nützlich sein.

Zur Erinnerung: Die Testumgebung ist MySQL Version 5.7.16.

Oben sind die Details eines kleinen Problems mit Nullwerten in MySQL. Weitere Informationen zu MySQL-Nullwerten finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Warum sollten MySQL-Felder NOT NULL verwenden?
  • Einige häufige Fehler mit MySQL null
  • 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

<<:  Auslassungspunkteeffekt anzeigen, wenn der Inhalt einer Tabellenzelle den Wert überschreitet (Implementierungscode)

>>:  Eine Frage zur Einstellung des Randradius-Werts

Artikel empfehlen

So schreiben Sie den Nofollow-Tag und verwenden ihn

Das „nofollow“-Tag wurde vor einigen Jahren von G...

MySQLs konzeptionelles Verständnis verschiedener Sperren

Optimistisches Sperren Optimistisches Sperren wir...

js zur Realisierung eines einfachen Puzzlespiels

In diesem Artikel wird der spezifische Code von j...

Vue implementiert nahtloses Scrollen von Listen

In diesem Artikelbeispiel wird der spezifische Co...

So zeigen Sie die IP-Adresse von Linux in einer virtuellen VMware-Maschine an

1. Doppelklicken Sie zunächst auf das VMware-Symb...

Verwenden Sie die Befehle more, less und cat in Linux, um Dateiinhalte anzuzeigen

Unter Linux können die Befehle cat, more und less...

Detaillierte Erläuterung der MySQL-Benutzerrechteverwaltung

Inhaltsverzeichnis Vorwort: 1. Einführung in die ...

Vue implementiert die Drag & Drop-Sortierfunktion der Seiten-Div-Box

vue implementiert die Drag & Drop-Sortierfunk...

MySQL View-Prinzipanalyse

Inhaltsverzeichnis Aktualisierbare Ansichten Leis...

So reduzieren Sie die Speicher- und CPU-Auslastung von Webseiten

<br />Einige Webseiten sehen nicht groß aus,...

So verstehen Sie das Ref-Attribut von React genau

Inhaltsverzeichnis Überblick 1. Erstellen eines R...

my.cnf (my.ini) wichtige Parameteroptimierungs-Konfigurationsanweisungen

MyISAM-Speicher-Engine Die MyISAM-Speicher-Engine...

Tutorial zur Verwendung des Multitail-Befehls unter Linux

MultiTail ist eine Software zum gleichzeitigen Üb...