NULL und leere Zeichenfolge in MySQL

NULL und leere Zeichenfolge in MySQL

Ich bin vor kurzem mit MySQL in Berührung gekommen. Gestern habe ich eine neue Tabelle erstellt, um Informationen zur Tabellenstruktur zu speichern:

Tabelle tablist erstellen(TABLE_SCHEMA varchar(40),TABLE_NAME varchar(40),COLUMN_NAME varchar(40),COLUMN_TYPE varchar(40),
IS_NULLABLE varchar (10), COLUMN_DEFAULT varchar (40), COLUMN_COMMENT varchar (1000), REMARK varchar (2000));
in Tablist einfügen (TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_DEFAULT, COLUMN_COMMENT)
Wählen Sie TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_DEFAULT, COLUMN_COMMENT
aus information_schema.`COLUMNS`, wobei TABLE_SCHEMA='leo';

Fragen Sie dann die Tablist-Tabelle ab:

Sehen Sie, welche Spalten keine Kommentare haben:

Wählen Sie * aus der Registerkartenliste, wo COLUMN_COMMENT null ist;

Das Ergebnis, das ich gefunden habe, war „Leere Menge“. Aus den obigen Abfrageergebnissen und Navicat können wir jedoch ersehen, dass der Nullwert im Ergebnissatz als Wort „null“ angezeigt wird, während die leere Zeichenfolge als leer angezeigt wird.

Nachdem ich die Informationen überprüft hatte, stellte ich fest, dass es in MySQL einen Unterschied zwischen dem Nullwert und der leeren Zeichenfolge gibt. Es ist sehr seltsam, dass sich der Nullwert nach dem Einfügen von COLUMN_COMMENT in eine leere Zeichenfolge verwandelt (der Grund ist unbekannt).

Verwenden Sie select * from tablist where COLUMN_COMMENT=''; und die Abfrage funktioniert einwandfrei.

NULL-Spalten benötigen zusätzlichen Platz in der Zeile, um aufzuzeichnen, ob ihre Werte NULL sind. Bei MyISAM-Tabellen benötigt jede NULL-Spalte ein zusätzliches Bit, aufgerundet auf das nächste Byte.

In der Myisam-Engine von MySQL belegen Nullwerte zusätzlichen Speicherplatz (1 Bit), während leere Zeichenfolgen überhaupt keinen Speicherplatz beanspruchen. Gleichzeitig können Nullwerte nicht im B-Baum-Indizierung gespeichert werden, was bei großen Datenmengen zu schwerwiegenden Leistungsproblemen führt.

Auch die Abfragemethoden der beiden sind unterschiedlich: Die Nullwertabfrage verwendet die „ist null/ist nicht null“-Abfrage, während leere Zeichenfolgen mit „=“ oder „!=“ abgefragt werden können.

Zusammenfassen

Oben habe ich Ihnen NULL und leere Zeichenfolgen in MySQL vorgestellt. Ich hoffe, es wird Ihnen helfen. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!

Das könnte Sie auch interessieren:
  • Der MySQL-Server läuft mit der Option --read-only und kann diese Anweisung daher nicht ausführen.
  • mysql-Datenbankmysql: [FEHLER] unbekannte Option ''--skip-grant-tables''
  • Detaillierte Erklärung zur Sicherstellung der Konsistenz von MySQL-Ansichten (mit Prüfoption)
  • Lösung für die Fehlermeldung "java.sql.SQLException: Incorrect string value:'\xF0\x9F\x92\xA9\x0D\x0A...'" beim Speichern von Emoticons in MySQL
  • Ein Beispiel für die Verbindung von MySQL mit PHP über ODBC zu einer beliebigen Datenbank
  • Detaillierte Erklärung zur Installation und vollständigen Deinstallation von MySQL mit apt-get unter Ubuntu
  • Beispiele für die korrekte Verwendung von AES_ENCRYPT() und AES_DECRYPT() zum Verschlüsseln und Entschlüsseln von MySQL
  • Der MySQL-Server wird mit der Option --skip-grant-tables ausgeführt.
  • Detaillierte Erklärung zur Verwendung von pt-heartbeat zur Überwachung der MySQL-Replikationsverzögerung
  • Einführung in die Verwendung des MySQL pt-slave-restart-Tools

<<:  Top 10 Js Bildverarbeitungsbibliotheken

>>:  So übertragen Sie Dateien zwischen Windows und Linux

Artikel empfehlen

Vue+Vant implementiert die obere Suchleiste

In diesem Artikelbeispiel wird der spezifische Co...

So beheben Sie das Timeout während des Pip-Vorgangs in Linux

So lösen Sie das Timeout-Problem, wenn Pip in Lin...

CSS: besuchte geheime Erinnerungen des Pseudoklassenselektors

Gestern wollte ich a:visited verwenden, um die Fa...

So erstellen Sie schnell MySQL Master-Slave mit mysqlreplicate

Einführung Das mysql-utilities-Toolset ist eine S...

Python 3.7-Installationstutorial für MacBook

Der detaillierte Prozess der Installation von Pyt...

MySQL GROUP_CONCAT-Einschränkungslösung

Wirkung: Die Funktion GROUP_CONCAT kann einen Fel...

So konfigurieren Sie Java-Umgebungsvariablen im Linux-System

Konfigurieren von Java-Umgebungsvariablen Hier we...

Flex-Layout erreicht feste Anzahl von Zeilen pro Zeile + adaptives Layout

Dieser Artikel stellt das Flex-Layout vor, um ein...

Das Vue-Projekt implementiert eine Fortschrittsbalkenfunktion für den Dateidownload

Im täglichen Geschäftsleben gibt es zwei gängige ...

Codebeispiele für die Sicherung mehrerer MySQL-Datenbanken

In diesem Artikel werden hauptsächlich Codebeispi...

SQL-Implementierung von LeetCode (178. Punkterangliste)

[LeetCode] 178.Ranglistenergebnisse Schreiben Sie...

Aktivieren oder Deaktivieren des GTID-Modus in MySQL online

Inhaltsverzeichnis Grundlegende Übersicht GTID on...

MySQL-Datenbankterminal – allgemeine Befehlscodes für Vorgänge

Inhaltsverzeichnis 1. Benutzer hinzufügen 2. Ände...

So simulieren Sie Netzwerkpaketverlust und -verzögerung in Linux

netem und tc: netem ist ein Netzwerksimulationsmo...